Winforms 当用户拖动面板、标签等时,如何移动窗体?
当用户拖动面板、标签或任何我想要的项目时,我希望移动整个表单。 如何在VisualC++中执行此操作? 我知道在VB中可以这样做,但我在VisualC++中工作。Winforms 当用户拖动面板、标签等时,如何移动窗体?,winforms,visual-c++,move,Winforms,Visual C++,Move,当用户拖动面板、标签或任何我想要的项目时,我希望移动整个表单。 如何在VisualC++中执行此操作? 我知道在VB中可以这样做,但我在VisualC++中工作。 有什么帮助吗?我不知道是否还有其他替代方法,但您可以为WM_MOUSEDOWN创建自己的处理程序(记不清了)。然后,您所要做的就是计算单击位置和控制器之间的差异 另外,为了让它移动,您需要处理WM_MOUSEMOVE或其他东西,用指针移动表单 您可以通过简单地使用一个布尔值来告诉mousemove它是否应该对鼠标移动做出反应来实现这一
有什么帮助吗?我不知道是否还有其他替代方法,但您可以为WM_MOUSEDOWN创建自己的处理程序(记不清了)。然后,您所要做的就是计算单击位置和控制器之间的差异 另外,为了让它移动,您需要处理WM_MOUSEMOVE或其他东西,用指针移动表单 您可以通过简单地使用一个布尔值来告诉mousemove它是否应该对鼠标移动做出反应来实现这一点
public int X_cood;
bool Mouse_Cord_Stored = false;
int MainForm_Mouse_X_Coordinates;
int MainForm_Mouse_Y_Coordinates;
Point p = new Point(ActiveForm.Location.X, ActiveForm.Location.Y);
private void MainForm_MouseMove(object sender, MouseEventArgs e)
{
switch (e.Button)
{
case (MouseButtons.Left)://To Let user move the Form1 when Left mouse button is pressed
{
switch (Mouse_Cord_Stored)
{
case false:
{
//If Mouse Coordinates are not stored, then store them.
MainForm_Mouse_X_Coordinates = e.X;
MainForm_Mouse_Y_Coordinates= e.Y;
Mouse_Cord_Stored = true;
break;
}
case true:
{
//Move the Form using ActiveForm.Location if mouse coordinates are stored
Form1.ActiveForm.Location = new Point(Form1.ActiveForm.Location.X + e.X - MainForm_Mouse_X_Coordinates
, Form1.ActiveForm.Location.Y + e.Y - MainForm_Mouse_Y_Coordinates);
break;
}
}
break;
}
default:
{
switch (Mouse_Cord_Stored)
{
case true:
{
Mouse_Cord_Stored = false;
break;
}
}
break;
}
}