Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
24.06.2016, 12:14
|
|||
---|---|---|---|
Как прервать выполнение CellMouseClick |
|||
#18+
Доброго всем дня! У меня возникла проблема с обработкой события мыши. Дело в том, что сделал свой cells DataGridViewTextButtomCell : DataGridViewTextBoxCell , В этом контроле мне по определенным координатам мыши в функции ниже надо прервать глобальное выполнение MouseClick. protected override void OnMouseClick(DataGridViewCellMouseEventArgs e) { if ((this.DataGridView.GetCellDisplayRectangle(this.ColumnIndex, this.RowIndex, false).Width - 20) > e.X) { прерывание } else { base.OnMouseClick(e); } } На сколько я понимаю, делегирование идет от DataGridView -> DataGridViewCell. По сути я хочу чтобы прерывание события было именно в DataGridViewCell, чтобы не нагружать кодом DataGridView. Если кто знает подскажите пожалуйста как изменить делегирование? как вариант пробовал FieldInfo eventClickField = typeof(Control).GetField("EventClick", BindingFlags.Public | BindingFlags.Instance); EventHandler eventClick = (EventHandler)eventClickField.GetValue((Control)this.DataGridView); this.DataGridView.Click -= (EventHandler)eventClick; eventClickField всегда показывает null. Не понятно в каком месте код надо прописывать? В Form? DataGridView? также пробовал EventDescriptor ed = TypeDescriptor.GetEvents(this.DataGridView).Find("CellMouseClick",true); Delegate delegateT = Delegate.CreateDelegate(typeof(EventHandler), this.DataGridView, "DataGridAlex_CellMouseClick"); if(ed!=null) ed.RemoveEventHandler(this.DataGridView, delegateT); на второй строке вызывает исключение Additional information: Не удается привязать целевой метод, поскольку его сигнатура или прозрачность безопасности несовместима с сигнатурой или прозрачностью безопасности типа делегата. В этом случае как можно снять исключение? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.06.2016, 13:45
|
|||
---|---|---|---|
|
|||
Как прервать выполнение CellMouseClick |
|||
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.06.2016, 13:59
|
|||
---|---|---|---|
Как прервать выполнение CellMouseClick |
|||
#18+
В раскраске Доброго всем дня! У меня возникла проблема с обработкой события мыши. Дело в том, что сделал свой cells DataGridViewTextButtomCell : DataGridViewTextBoxCell , В этом контроле мне по определенным координатам мыши в функции ниже надо прервать глобальное выполнение MouseClick. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
На сколько я понимаю, делегирование идет от DataGridView -> DataGridViewCell. По сути я хочу чтобы прерывание события было именно в DataGridViewCell, чтобы не нагружать кодом DataGridView. Если кто знает подскажите пожалуйста как изменить делегирование? как вариант пробовал Код: c# 1. 2. 3.
eventClickField всегда показывает null. Не понятно в каком месте код надо прописывать? В Form? DataGridView? также пробовал Код: c# 1. 2. 3. 4.
на второй строке вызывает исключение Additional information: Не удается привязать целевой метод, поскольку его сигнатура или прозрачность безопасности несовместима с сигнатурой или прозрачностью безопасности типа делегата. В этом случае как можно снять исключение? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=20&mobile=1&tid=1400502]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 258ms |
total: | 396ms |
0 / 0 |