Событие двойного щелчка на формах без полей

#c# #winforms #double-click #borderless

#c# #winforms #двойной щелчок #без полей

Вопрос:

Я создал форму без полей и смог активировать событие перемещения формы с помощью этого кода:

 [System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

private void FASTMain_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        ReleaseCapture();
        SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
    }
}

private void FASTMain_Move(object sender, EventArgs e)
{
    WindowState = FormWindowState.Normal;
}
  

Я хотел бы знать, возможно ли также перехватить событие двойного щелчка мыши в форме.

Ответ №1:

Попробуйте проверить значение e.Clicks:

 protected override void OnMouseDown(MouseEventArgs e) {
  base.OnMouseDown(e);

  if (e.Button == MouseButtons.Left) {
    if (e.Clicks > 1) {
      // do something with double-click
    } else {
      ReleaseCapture();
      SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
    }
  }
}
  

Комментарии:

1. Сработало. Большое спасибо