Я знаю, что на этот вопрос уже получен ответ, но если вы планируете часто использовать кусочки 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» - это то, что я назвал моим .)
Согласно MSDN , событие Click вызывается не только при щелчке мышью, но и при нажатии кнопки Enter. Если вам нужно обрабатывать только щелчки мыши, я бы переместил весь ваш код в событие MouseClick. Вы не можете сделать это наоборот, потому что событие Click не сообщает вам, какая кнопка мыши (если таковая имеется) была нажата.
Во-первых, ваша ссылка неверна, она ведет на HTML и DHTML Reference, а не на WinForms :)
Правильная ссылка: Событие Control.MouseClick
Вам нужно переопределить только один метод. Если вы хотите обрабатывать только щелчки мыши - переопределите OnMouseClick () и не обрабатывайте событие MouseClick, в противном случае - переопределите OnClick () и не переопределите OnMouseClick ().
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.
In Winforms, the Click event is raised when either mouse key is clicked.
OnClick и CustomControl_MouseClick - это одно и то же событие
Вы можете привязать к событию любое количество методов (this.Click + = ...)