如何检测大小夹点双击事件?

时间:2014-02-14 02:11:12

标签: c# winforms window-resize

我正在寻找一种方法来检测双击窗口大小的手柄,但是对于大小手柄或任何与之相关的事件,似乎都没有单击事件。猜测抓握区域的大小以及用户是否真正点击了所需区域是一项不必要的困难工作。但也许有一些其他方法来检测光标是否 除了默认的winform属性之外,在窗体的大小夹点上?

有没有一种简单的方法可以知道用户何时双击表单的大小夹点?

1 个答案:

答案 0 :(得分:0)

你需要:

  1. 设置一种在表单的非客户区域上接收鼠标双击事件的方法。
  2. 定义一个您想要对该事件作出反应的hitbox。
  3. 当它在你的hitbox中时对事件做出反应。
  4. 重写WndProc表单方法以实现此目的:

        protected override void WndProc(ref Message m)
        {
            const Int32 WM_NCLBUTTONDBLCLK = 0xA3;
            if (m.Msg == WM_NCLBUTTONDBLCLK)
            {
                //This is a 16x16 region...define the bounds you want...
                Rectangle hitbox = new Rectangle(this.Right - 16, this.Bottom - 16, 16, 16);
                Point pos = new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16);
                if (hitbox.Contains(pos))
                    MessageBox.Show("got it");  //react however you like
            }
            base.WndProc(ref m);
        }