Вызов события MouseClick у формы, при нажатии на дочерние Controls (Winforms)
У меня есть форма, на ней некая кнопка.
Если я нажимаю на свободное место на форме, то у формы вызывается событие MouseClick. Но если я нажму на кнопку на форме, то у кнопки вызовется это событие, а у формы уже нет.
Как сделать так, чтобы при нажатии на кнопку, MouseClick вызывался и у формы?
Знаю, что в JavaScript можно настроить event rising, может можно в winforms?
Ответы (1 шт):
Автор решения: Jack Owest
→ Ссылка
Для этого нужно для родительского элемента установить свойство ControlStyles.ContainerControl в true
Ещё нужно переопределить метод ProcessCmdKey в форме и возвращать false, чтобы событие правильно обрабатывалось.
Пример:
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
this.SetStyle(ControlStyles.ContainerControl, true);
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
return false;
}
private void MyForm_MouseClick(object sender, MouseEventArgs e)
{
MessageBox.Show("MouseClick on form!");
}
private void MyButton_MouseClick(object sender, MouseEventArgs e)
{
MessageBox.Show("MouseClick on button!");
}
}