Ants Hurdley Ответов: 4

DataGridView - Click и Double click событие не срабатывает


Привет
У меня есть форма с datagridview - проблема в том, что я не могу заставить события doubleclick содержимого ячейки (или щелчок) срабатывать.

У меня есть другие формы в том же проекте, где я сделал то же самое, и они прекрасно работают, но по какой-то причине эта форма не работает. Я удалил элемент управления и повторно добавил его и удалил весь свой код форматирования, чтобы сделать код как можно более простым

У кого-нибудь есть какие-нибудь предложения?

В событии двойного щелчка у меня есть следующее:
Private Sub dgvToDo_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
  MsgBox("Hello world")
End Sub


И все, что я сделал, чтобы установить свой источник данных, заключается в следующем

dgv.DataSource = mObjToDoData.GetToDoDataDataset.Таблицы(0)
Это возвращает две строки данных и отлично отображается.

Любые предложения будут очень признательны

Муравьи
Новая Зеландия

Ants Hurdley

Найти проблему

Я устанавливал сетку на ничто в неправильном месте (dgv= ничто)- идиот - спасибо за вашу помощь

4 Ответов

Рейтинг:
31

jerrykid

Муравьи,

CellContentDoubleClick запускается, когда DataGridView установлен в режим только для чтения = false.

Пожалуйста, попробуйте установить

dgv.ReadOnly = false;


С уважением,


Abhinav S

Хороший ответ.

Ants Hurdley

Спасибо - я изменил его на false, и все же он все еще не работает. Я заметил, что мой второй был установлен на false - так что это звучит так, как будто вы на правильном пути.

jerrykid

О, Спасибо, что выбрали мой ответ, чтобы быть принятым ответом :). Сетка - это ничто, что также приведет к отмене обработки события CellContentDoubleClick. :)

Рейтинг:
26

Prerak Patel

О Человек! Где находится часть "ручки".

Попробуйте добавить Handles dgvToDo.CellContentDoubleClick или использовать AddHandler

т.е.

Private Sub dgvToDo_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvToDo.CellContentDoubleClick

или
AddHandler dgvToDo.CellContentDoubleClick, AddressOf dgvToDo_CellContentDoubleClick


Ants Hurdley

Привет, у меня действительно был Гендель в моем коде - по какой-то причине я не скопировал и не вставил его должным образом в этот пост

Private Sub dgv_CellContentClick(ByVal sender As System.Объект, бывал е как система.Окна.Формы.DataGridViewCellEventArgs) обрабатывает dgv.CellContentClick
MsgBox("Привет, Мир")
Конец Подводной Лодки

Ants Hurdley

а также

Частная суб dgv_CellContentDoubleClick(как byval отправителя как объект, как byval E Как системы.Окна.Формы.DataGridViewCellEventArgs) обрабатывает dgv.CellContentDoubleClick
MsgBox("Привет, Мир")
Конец Подводной Лодки

Рейтинг:
2

netfed

CellContentDoubleClick не срабатывает, когда вы, например, также помещаете DoDragDrop-оператор в MouseDown eventhandler для datagridview.

Вот код, который у меня есть, который заставляет CellContentDoubleClick не срабатывать (причина здесь подчеркнута жирным шрифтом):

Private Sub gridd_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles gridd.MouseDown
       SourceRowIndex = -1
       SourceColIndex = -1
       If e.Button = Windows.Forms.MouseButtons.Left Then
           If gridd.HitTest(e.X, e.Y).Type = DataGridViewHitTestType.Cell Then
               SourceRowIndex = gridd.HitTest(e.X, e.Y).RowIndex
               SourceColIndex = gridd.HitTest(e.X, e.Y).ColumnIndex
               DoDragDrop(gridd.Rows(SourceRowIndex).Cells(SourceColIndex).Value, DragDropEffects.Copy)
           End If
       End If
   End Sub


Эта строка вызывает проблему (по крайней мере, в моем случае):
DoDragDrop(gridd.Строки(SourceRowIndex).Ячейки(SourceColIndex).Value, DragDropEffects.Copy)


Рейтинг:
0

Member 14598452

Я предлагаю вам закодировать его в CellDoubleClick вместо CellContentDoubleClick, он работает для меня