|
Как прервать выполнение 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, 12:14 |
|
Как прервать выполнение CellMouseClick
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 13:45 |
|
Как прервать выполнение 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: Не удается привязать целевой метод, поскольку его сигнатура или прозрачность безопасности несовместима с сигнатурой или прозрачностью безопасности типа делегата. В этом случае как можно снять исключение? Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 13:59 |
|
|
start [/forum/search_topic.php?author=%D0%98%D1%81%D0%BB%D0%B0%D0%BD&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 1268ms |
total: | 1429ms |
0 / 0 |