C# 窗口拖动定位时鼠标闪动,很难定位拖动
时间: 2023-07-12 12:08:55 浏览: 49
这个问题可能是由于鼠标跟随窗口移动导致的。你可以尝试禁用鼠标跟随功能来解决这个问题。以下是一种可能的解决方案:
1. 在窗口类的构造函数中添加以下代码:
```csharp
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
UpdateStyles();
```
这将启用双缓冲和所有绘图操作在窗口消息处理程序中进行。
2. 在窗口类中添加以下变量:
```csharp
private const int WM_NCHITTEST = 0x0084;
private const int HTCLIENT = 0x01;
private const int HTCAPTION = 0x02;
```
这些变量将用于确定鼠标指针在窗口的哪个部分。
3. 重写窗口的 WndProc 方法:
```csharp
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_NCHITTEST:
base.WndProc(ref m);
if (m.Result.ToInt32() == HTCLIENT)
m.Result = new IntPtr(HTCAPTION);
return;
}
base.WndProc(ref m);
}
```
这将覆盖默认的窗口消息处理程序并允许拖动窗口时正常移动鼠标指针。
这些步骤应该可以解决闪烁问题并使窗口拖动更加精确。