Корректное использование OnClick по сравнению с событиями MouseClick в приложениях Windows Forms с помощью C#

Я знаю, что на этот вопрос уже получен ответ, но если вы планируете часто использовать кусочки IEnumerables, то я рекомендую создать общий метод расширения, подобный следующему:

public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> source, int chunkSize)
{
    return source.Where((x,i) => i % chunkSize == 0).Select((x,i) => source.Skip(i * chunkSize).Take(chunkSize));
}

Затем вы можете использовать sequence.Split(3) для получить то, что вы хотите.

(вы можете назвать это как-то еще как «ломтик» или «кусок», если вам не нравится, что «split» уже был определен для строк. «Split» - это то, что я назвал моим .)

5
задан Peter Mortensen 7 February 2013 в 12:51
поделиться

5 ответов

Согласно MSDN , событие Click вызывается не только при щелчке мышью, но и при нажатии кнопки Enter. Если вам нужно обрабатывать только щелчки мыши, я бы переместил весь ваш код в событие MouseClick. Вы не можете сделать это наоборот, потому что событие Click не сообщает вам, какая кнопка мыши (если таковая имеется) была нажата.

11
ответ дан 18 December 2019 в 13:18
поделиться

Во-первых, ваша ссылка неверна, она ведет на HTML и DHTML Reference, а не на WinForms :) Правильная ссылка: Событие Control.MouseClick
Вам нужно переопределить только один метод. Если вы хотите обрабатывать только щелчки мыши - переопределите OnMouseClick () и не обрабатывайте событие MouseClick, в противном случае - переопределите OnClick () и не переопределите OnMouseClick ().

6
ответ дан 18 December 2019 в 13:18
поделиться

You shouldn't need to have both events... Just keep the OnClick.

Also, I haven't done Windows Forms in quite a while, but I think there's a better way to accept focus than manually setting it on the click event, but I can't tell you specifically what it is... I think there's a property for it or something.

0
ответ дан 18 December 2019 в 13:18
поделиться

In Winforms, the Click event is raised when either mouse key is clicked.

0
ответ дан 18 December 2019 в 13:18
поделиться

OnClick и CustomControl_MouseClick - это одно и то же событие

Вы можете привязать к событию любое количество методов (this.Click + = ...)

-3
ответ дан 18 December 2019 в 13:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: