【问题标题】:How to make a window Draggable(C# Winforms)?如何使窗口可拖动(C# Winforms)?
【发布时间】:2011-04-29 01:02:34
【问题描述】:

我有形式。我已启用表单的透明度,并删除了它的标题栏和边框。在里面,我创建了一个自定义 UI,它具有与窗口相同的功能。基本上,我的想法是创建自定义窗口。

一切都按预期工作,但只有窗口拖动不起作用。我不确定如何启用它。我用谷歌搜索了这个。但我没有找到任何对我有用的信息。

请帮我实现这个窗口拖动。

【问题讨论】:

标签: c# .net winforms draggable


【解决方案1】:

我已通过捕获 mousedown(在 mouseup 时取消捕获)然后 mousemove 来实现此行为。

只需移动窗体坐标(左、上),相当于鼠标移动的量(这些事件具有鼠标移动的量)。

这对我来说很好。

【讨论】:

    【解决方案2】:
    class YourForm : Form
    {
         private const int WM_NCHITTEST = 0x84;
         private const int HTCLIENT = 0x1;
         private const int HTCAPTION = 0x2;
    
         ///
         /// Handling the window messages 
         ///
         protected override void WndProc(ref Message message)
         {
              base.WndProc(ref message);
    
              if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT)
                   message.Result = (IntPtr)HTCAPTION;
         }
    }
    

    【讨论】:

      【解决方案3】:

      最简单的方法是处理WM_NCHITTEST 消息并为自定义窗口的部分返回HTCAPTION,这些部分的工作方式与普通窗口中的标题栏一样。 Windows 将完成剩下的工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多