Я показываю форму, используя Form.ShowDialog()
, в этой форме у меня есть переопределение void WndProc(ref Message m)
, потому что я хочу закрыть эту форму, когда пользователь щелкает за пределами области формы.
private const int WM_NCACTIVATE = 0x0086;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_NCACTIVATE:
if (_canClose) // when user click outside form, close form
this.Close(this, EventArgs.Empty);
break;
default:
break;
}
base.WndProc(ref m);
}
Этот код работает, как я и ожидал, но есть одна незначительная проблема: воспроизведение Windows DING
звучит каждый раз, когда пользователь нажимает за пределами области формы, я хочу отключить этот DING
при обработке этого кода.
UPDATE
Мне удалось заставить эту Форму работать так, как я хочу, используя советы Hassan Mujtaba
, но я все еще задаюсь вопросом, как отключить эту DING
, если я использую Form.ShowDialog
.
![DateRange Control](https://i.stack.imgur.com/m5HN4.png)