|
在 WinForm 中实现无边框窗体的拖动,可以使用以下步骤:
将窗体的 FormBorderStyle 属性设置为 None,以隐藏窗体边框。
在窗体的 MouseDown 事件中,调用窗体的 Capture 方法来锁定鼠标捕获。
在窗体的 MouseMove 事件中,通过调用窗体的 BeginInvoke 方法来激活一个匿名方法,在该方法中通过调用窗体的 SetDesktopLocation 方法来更新窗体的位置。
在窗体的 MouseUp 事件中,调用窗体的 ReleaseCapture 方法来释放鼠标捕获。
以下是一个简单的例子,展示了如何使用上述步骤实现无边框窗体的拖动:
Copy code
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
this.Capture = true;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (this.Capture)
{
this.BeginInvoke(new MethodInvoker(() =>
{
this.SetDesktopLocation(Cursor.Position.X - this.Width / 2, Cursor.Position.Y - this.Height / 2);
}));
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
this.Capture = false;
}
}
在这个例子中,窗体的 FormBorderStyle 属性被设置为 None,以隐藏窗体边框。在鼠标按下时,调用 Capture 方法来锁定鼠标捕获。在鼠标移动时,通过调用 BeginInvoke 方法 |
|