Редактировать * ok жаль, что не дал реального сценария,
на самом деле у меня есть datagridview, созданный программно, я ставлю 2 события, которые являются mouseclick и ColumnHeaderMouseClick.
в настоящее время всякий раз, когда пользователь нажимает на заголовок столбца, он сначала запускает mouseclick, а затем ColumnHeaderMouseClick
могу ли я изменить порядок триггера? или я могу узнать, когда пользователь щелкнет, я могу проверить, нажимает ли он заголовок столбца или другое место в событии mouseclick?
Я получил решение уже, я получаю индекс строки, если -1 означает, что это заголовок, поэтому я могу сделать if if else уже, нет необходимости в другом событии, достаточно, если событие сотового клика само по себе может обрабатывать оба сценария,
жаль просить сложным образом, когда решение так просто, спасибо за помощь.
Я не знаю, как это сделать. События происходят в соответствии с событиями, которые действительно происходят. Другими словами, это было бы похоже на то, что вы можете пройти через дверь, не открывая ее в первую очередь. Это не имеет смысла в контексте.
Не могли бы вы переключить код, который вы вызываете, и нажмите? Или просто используйте клик и выполните события в любом порядке, который вам нравится?
Вы не можете этого сделать, это не логично. Событие MouseDown
обязательно встречается до события MouseClick
потому что для MouseClick
мыши нужно было спуститься вниз. Когда кнопка мыши опускается, MouseDown
событие MouseDown
. Событие MouseClick
не может быть поднято до некоторого времени после этого.
Порядок событий мыши явно документируется в MSDN и не может быть изменен.
И вы говорите, что это был всего лишь пример того, что вы работаете над другими событиями. К сожалению, ответ будет одинаковым. Порядок, в котором возникают события, - это что-то, что решил программист, который написал код, который повышает эти события. Для вас, потребителя библиотеки, нет механизма для изменения этого порядка.
Подобно событиям мыши, о которых говорилось выше, в документации MSDN приведен список всех значимых событий, созданных библиотекой WinForms.
Конечно, если вы пишете код, который вызывает события, вы всегда можете изменить его, чтобы поднять их в любом порядке. Но я подозреваю, что многое очевидно, а не почему вы задаете этот вопрос.
Большинство реализаций С# обычно запускают обработчики событий в порядке их регистрации для каждого события. Однако это не соблюдается!
Это может измениться в любое время, и поэтому вы не должны создавать зависимость от порядка обработчиков событий в своем приложении.
Я настоятельно рекомендую вам сделать шаг назад и проанализировать ваш дизайн приложения для устранения этой зависимости.
Как многие из них предложили свои ответы, попытка изменить порядок событий не рекомендуется по нескольким причинам.
Чтобы добиться того, чего вы хотите, вам придется повторно реализовать элементы управления Windows Forms.NET Framework. Вы также можете попытаться захватить обработку сообщений Windows, переопределив процедуру WndProc
и обработав непосредственно сообщения, предоставляемые ОС, но вы узнаете, что порядок запуска события соответствует порядку, в котором ОС отправляет ввод, предоставленный устройством (мышь ) к затронутым окнам/элементам управления.