以下是一个示例代码,它使用名为“panelTitle”的自定义控件来实现拖动窗体
csharp
public partial class Form1 : Form
{
private bool dragging = false;
private Point dragCursorPoint;
private Point dragFormPoint;
public Form1()
{
InitializeComponent();
}
private void panelTitle_MouseDown(object sender, MouseEventArgs e)
{
dragging = true;
dragCursorPoint = Cursor.Position;
dragFormPoint = this.Location;
}
private void panelTitle_MouseUp(object sender, MouseEventArgs e)
{
dragging = false;
}
private void panelTitle_MouseMove(object sender, MouseEventArgs e)
{
if (dragging)
{
Point dif = Point.Subtract(Cursor.Position, new Size(dragCursorPoint));
this.Location = Point.Add(dragFormPoint, new Size(dif));
}
}
}
```在此示例中,MouseDown事件处理程序设置dragging变量为true,并保存当前鼠标光标位置和窗体位置。MouseMove事件处理程序在拖动期间计算鼠标移动的差异,并将其添加到窗体位置中。MouseUp事件处理程序将dragging变量设置为false。
请注意,此示例假定您已经在窗体上创建一个名为panelTitle的自定义控件,并将其MouseDown,MouseUp和MouseMove事件与相应的事件处理程序关联。
您还可以将上述代码与其他控件一起使用,例如窗体本身或任何其他控件。在这种情况下,您需要将相应的事件处理程序分配给该控件