Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как прервать выполнение CellMouseClick / 3 сообщений из 3, страница 1 из 1
24.06.2016, 12:14
    #39261687
saley
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать выполнение CellMouseClick
Доброго всем дня!
У меня возникла проблема с обработкой события мыши.
Дело в том, что сделал свой 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: Не удается привязать целевой метод, поскольку его сигнатура или прозрачность безопасности несовместима с сигнатурой или прозрачностью безопасности типа делегата.

В этом случае как можно снять исключение?

Заранее спасибо!
...
Рейтинг: 0 / 0
24.06.2016, 13:45
    #39261789
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать выполнение CellMouseClick
...
Рейтинг: 0 / 0
24.06.2016, 13:59
    #39261800
saley
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать выполнение CellMouseClick
В раскраске
Доброго всем дня!
У меня возникла проблема с обработкой события мыши.
Дело в том, что сделал свой cells DataGridViewTextButtomCell : DataGridViewTextBoxCell ,
В этом контроле мне по определенным координатам мыши в функции ниже надо прервать глобальное выполнение MouseClick.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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.

Если кто знает подскажите пожалуйста как изменить делегирование?


как вариант пробовал
Код: c#
1.
2.
3.
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?

также пробовал
Код: c#
1.
2.
3.
4.
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: Не удается привязать целевой метод, поскольку его сигнатура или прозрачность безопасности несовместима с сигнатурой или прозрачностью безопасности типа делегата.

В этом случае как можно снять исключение?

Заранее спасибо!
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как прервать выполнение CellMouseClick / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]