我想启用这个 System.Windows.Forms.Panel,以便如果用户单击并拖动鼠标,则将窗口拖动到周围。
我可以这样做吗?我必须实施多个事件吗?
最适合我的解决方案是使用非托管代码,与 HatSoft 发布的答案不同,它可以为您提供平滑的窗口移动。
3 个小步骤即可在面板上拖动窗口
using System.Runtime.InteropServices;
在你的类中添加这六行
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
面板上的 MouseMove 事件应该如下所示
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
发布有点晚了:),谁知道我们将来可能会再次需要它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)