Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить значение из под мышки в DataGrid. 
V
    Опции темы
vladd
Дата 26.3.2012, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Здравствуйте.
Как получить значение из ячейки строки в DataGrid над которой находится мышка?
Т.е. сначало надо определить строку над которой находится мышка, а потом считать значение из ячеек. 
Кроме как через координаты не имею представления как это можно сделать без клика. Помогите пожалуйста.
PM MAIL   Вверх
diadiavova
Дата 26.3.2012, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Отлови событие CellMouseEnter, там в аргументах найдешь и строку и столбец, можешь передать их полям класса и они всегда будут возвращать актуальные индексы.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vladd
Дата 27.3.2012, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Спасибо! Все получаю нужную строку. Но возник еще вопрос. Как сделать чтобы  CellMouseEnter работал только когда я в нем вожу мышкой? Сейчас он у меня работает даже если я в режиме отладки программы нахожусь в коде, а форма программы на втором уровне под окном VS.
PM MAIL   Вверх
diadiavova
Дата 27.3.2012, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(vladd @  27.3.2012,  08:33 Найти цитируемый пост)
 Как сделать чтобы  CellMouseEnter работал только когда я в нем вожу мышкой? 

Так и должно по идее.
Цитата(vladd @  27.3.2012,  08:33 Найти цитируемый пост)
Сейчас он у меня работает даже если я в режиме отладки программы нахожусь в коде, а форма программы на втором уровне под окном VS. 

Не совсем понял, что значит работает, по идее он должен срабатывать именно тогда, когда мышка наводится на ячейку. Можно, конечно, поизголяться и выполнять действия либо по условию, либо вообще снимать обработчик с события, когда он не нужен (RemoveHandler), но не знаю, хорошая ли это идея.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vladd
Дата 27.3.2012, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



На снимке видно на втором плане форма и DataGrid. Когда я ставлю точку останова в коде во время работы программы, то она срабатывает и показывает 12 строку DataGrid. Т.е. срабатывает через VS, как будто её и нет. Это или глюк VS, или я чего то делаю не так. 

Добавлено @ 09:18
user posted image

Это сообщение отредактировал(а) vladd - 27.3.2012, 09:19
PM MAIL   Вверх
diadiavova
Дата 27.3.2012, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



vladd, возможно это последняя ячейка, на которую попал курсор перед тем, как ты перешел к студии? Трудно сказать, я ведь не знаю, какую ты там логику запилил.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vladd
Дата 27.3.2012, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Сделал отдельно программку TestDataGrid. Там только форма и DataGrid. Если запускать её из кода, поставив сразу точку останова, то получается тот же самый эффект.  CellMouseEnter работает через VS. 
Код
Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        DataGridView1.Rows.Add(20)
        DataGridView1.Height = 900
    End Sub

    Private Sub DataGridView1_CellMouseEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellMouseEnter
        Dim R As Integer       
        If e.RowIndex >= 0 Then
            R = e.RowIndex
        End If
    End Sub
End Class


Код простейший.
PM MAIL   Вверх
diadiavova
Дата 27.3.2012, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(vladd @  27.3.2012,  11:20 Найти цитируемый пост)
Сделал отдельно программку TestDataGrid. 

Вообще-то надо было саму программу выложить.
Цитата(vladd @  27.3.2012,  11:20 Найти цитируемый пост)
 Если запускать её из кода, поставив сразу точку останова, то получается тот же самый эффект.  CellMouseEnter работает через VS. 

Сложно сказать, очень может быть, что это проблема даже не студии, а взаимодействия WinForm и WPF. Гуй студии написан с использованием последней, а впф не использует контролов из user32.dll, поэтому иногда при взаимодействии могут быть такие эффекты. Это предположение, конечно, но там и другие нюансы есть, например, когда в студии открываешь проект, то при наведении на ссылку на стартовой странице появляется тултип, если в процессе загрузки проекта перейти к другому приложению, то этот тултип будет отображаться поверх его окна вплоть до окончания загрузки. Скорей всего этот эффект из той же оперы.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vladd
Дата 28.3.2012, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Цитата(diadiavova @ 27.3.2012,  16:20)

Вообще-то надо было саму программу выложить.

А как можно выложить исходник без файлообменника в rar, силами форума? 
PM MAIL   Вверх
diadiavova
Дата 28.3.2012, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(vladd @  28.3.2012,  10:44 Найти цитируемый пост)
А как можно выложить исходник без файлообменника в rar, силами форума?  

Внимательнее изучи форму отправки сообщения. Там есть поле для ввода имени файла с кнопкой "Обзор" рядом.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vladd
Дата 28.3.2012, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Цитата(diadiavova @ 28.3.2012,  09:49)

Внимательнее изучи форму отправки сообщения. Там есть поле для ввода имени файла с кнопкой "Обзор" рядом.

Пробовал, загрузка идет, а в предварительном просмотре уже нет файла. Т.е. файл не закрепляется в сообщении.  
Оказывается закрепляется, только в предварительном просмотре его нет. Поэтому и задал этот вопрос. 
Закрепил исходник  по Data Grid.

Это сообщение отредактировал(а) vladd - 28.3.2012, 13:00

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  TestDataGrid.rar 64,35 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.