C# 使用面板移动无边框窗体 我有3个面板,它们是码头顶部,左边,中间是集装箱。
由于面板已满,所以没有空间单击主窗体 我想移动我的表单,单击顶部固定面板 下面的代码在不使用面板的情况下工作正常(单击面板下的主窗体) 我试着用panel1_MouseDown制作,但没有成功C# 使用面板移动无边框窗体 我有3个面板,它们是码头顶部,左边,中间是集装箱。,c#,.net,winforms,C#,.net,Winforms,由于面板已满,所以没有空间单击主窗体 我想移动我的表单,单击顶部固定面板 下面的代码在不使用面板的情况下工作正常(单击面板下的主窗体) 我试着用panel1_MouseDown制作,但没有成功 有什么方法可以实现吗?这似乎对我很有用: bool moving; Point offset; Point original; void panel1_MouseDown(object sender, MouseEventArgs e) { moving = true; panel1.C
有什么方法可以实现吗?这似乎对我很有用:
bool moving;
Point offset;
Point original;
void panel1_MouseDown(object sender, MouseEventArgs e)
{
moving = true;
panel1.Capture = true;
offset = MousePosition;
original = this.Location;
}
void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (!moving)
return;
int x = original.X + MousePosition.X - offset.X;
int y = original.Y + MousePosition.Y - offset.Y;
this.Location = new Point(x, y);
}
void panel1_MouseUp(object sender, MouseEventArgs e)
{
moving = false;
panel1.Capture = false;
}
试试这个,它对我有用。在主面板上使用此方法,我是指您想要移动窗体或去观看我找到的此视频的面板
还是一样。没有移动。@S.Zunbag嗯,我制作了一个简单的应用程序,有两个面板,分别称为panel1和panel2,正如您所描述的那样对接,上面的代码可以工作。因此,一定还有其他一些因素没有在OP中描述。如果你制作一个带有两个面板的简单应用程序,并使用上面的代码会发生什么?@MatthewWatson如上所述,我使用图片框和表格布局面板尝试了相同的代码,效果很好
bool moving;
Point offset;
Point original;
void panel1_MouseDown(object sender, MouseEventArgs e)
{
moving = true;
panel1.Capture = true;
offset = MousePosition;
original = this.Location;
}
void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (!moving)
return;
int x = original.X + MousePosition.X - offset.X;
int y = original.Y + MousePosition.Y - offset.Y;
this.Location = new Point(x, y);
}
void panel1_MouseUp(object sender, MouseEventArgs e)
{
moving = false;
panel1.Capture = false;
}
int mouseX, mouseY;
bool mouseM;
private void panel7_MouseUp(object sender, MouseEventArgs e)
{
mouseM = false;
}
private void panel7_MouseDown(object sender, MouseEventArgs e)
{
mouseX = e.X;
mouseY = e.Y;
mouseM = true;
}
private void panel7_MouseMove(object sender, MouseEventArgs e)
{
if (mouseM)
{
SetDesktopLocation(MousePosition.X - mouseX, MousePosition.Y - mouseY);
}
}