我有表格。我已经启用了表单上的透明度,我删除了它的标题栏和边框。在里面我创建了一个自定义UI,它具有与窗口相同的功能。基本上,我的想法是创建自定义窗口。
一切都按预期工作,但只有窗口拖动不起作用。我不知道如何启用它。我用Google搜索了这个。但我没有找到任何有用的信息。
请帮我实现此窗口拖动。
答案 0 :(得分:5)
我通过捕获mousedown(在mouseup上取消捕获)然后mousemove实现了这种行为。
只需移动表格坐标(左,上),等效于鼠标移动(这些事件具有鼠标移动的数量)。
这对我来说很好。
答案 1 :(得分:1)
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;
}
}
答案 2 :(得分:0)
最简单的方法是处理WM_NCHITTEST
消息并返回HTCAPTION
以查看自定义窗口的部分,这些部分的工作方式类似于常规窗口中的标题栏。 Windows将完成剩下的工作。