C # изменить порядок событий

1

Редактировать * ok жаль, что не дал реального сценария,

на самом деле у меня есть datagridview, созданный программно, я ставлю 2 события, которые являются mouseclick и ColumnHeaderMouseClick.
в настоящее время всякий раз, когда пользователь нажимает на заголовок столбца, он сначала запускает mouseclick, а затем ColumnHeaderMouseClick

могу ли я изменить порядок триггера? или я могу узнать, когда пользователь щелкнет, я могу проверить, нажимает ли он заголовок столбца или другое место в событии mouseclick?

Теги:
events

5 ответов

0
Лучший ответ

Я получил решение уже, я получаю индекс строки, если -1 означает, что это заголовок, поэтому я могу сделать if if else уже, нет необходимости в другом событии, достаточно, если событие сотового клика само по себе может обрабатывать оба сценария,
жаль просить сложным образом, когда решение так просто, спасибо за помощь.

1

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

Не могли бы вы переключить код, который вы вызываете, и нажмите? Или просто используйте клик и выполните события в любом порядке, который вам нравится?

  • 0
    пожалуйста, обратитесь к моему отредактированному вопросу
1

Вы не можете этого сделать, это не логично. Событие MouseDown обязательно встречается до события MouseClick потому что для MouseClick мыши нужно было спуститься вниз. Когда кнопка мыши опускается, MouseDown событие MouseDown. Событие MouseClick не может быть поднято до некоторого времени после этого.

Порядок событий мыши явно документируется в MSDN и не может быть изменен.

И вы говорите, что это был всего лишь пример того, что вы работаете над другими событиями. К сожалению, ответ будет одинаковым. Порядок, в котором возникают события, - это что-то, что решил программист, который написал код, который повышает эти события. Для вас, потребителя библиотеки, нет механизма для изменения этого порядка.

Подобно событиям мыши, о которых говорилось выше, в документации MSDN приведен список всех значимых событий, созданных библиотекой WinForms.

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

  • 0
    пожалуйста, обратитесь к моему отредактированному вопросу
0

Большинство реализаций С# обычно запускают обработчики событий в порядке их регистрации для каждого события. Однако это не соблюдается!

Это может измениться в любое время, и поэтому вы не должны создавать зависимость от порядка обработчиков событий в своем приложении.

Я настоятельно рекомендую вам сделать шаг назад и проанализировать ваш дизайн приложения для устранения этой зависимости.

  • 0
    Я думаю, что у вас есть правильная идея, но используемая вами терминология сбивает с толку. Вы не регистрируете события , вы регистрируете обработчики событий . Действительно, порядок, в котором выполняются обработчики событий, если они все подписаны на одно и то же событие, является чисто деталью реализации. В текущей реализации они выполняются в том порядке, в котором они были зарегистрированы, но это не гарантируется. Это становится особенно сложным, когда у вас есть многопоточный код; Вы не можете разумно полагаться на любой заказ. Что касается событий , они всегда вызываются в том порядке, в котором они вызываются в коде.
  • 0
    Ах, действительно, это было мое намерение. Я сделал соответствующие исправления. Спасибо за комментарий. Проголосовал ваш ответ для большей полноты.
0

Как многие из них предложили свои ответы, попытка изменить порядок событий не рекомендуется по нескольким причинам.

Чтобы добиться того, чего вы хотите, вам придется повторно реализовать элементы управления Windows Forms.NET Framework. Вы также можете попытаться захватить обработку сообщений Windows, переопределив процедуру WndProc и обработав непосредственно сообщения, предоставляемые ОС, но вы узнаете, что порядок запуска события соответствует порядку, в котором ОС отправляет ввод, предоставленный устройством (мышь ) к затронутым окнам/элементам управления.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню