【问题标题】:How to make moveable on the desktop a borderless form in c#? [duplicate]如何在c#中使桌面上的可移动窗体成为无边框形式? [复制]
【发布时间】:2020-07-04 13:58:18
【问题描述】:

我希望能够在 c# 中用鼠标移动一个没有边框和标题栏的表单。

我查看了 youtube,但找不到任何有效的方法。

有人可以帮助我吗?

【问题讨论】:

  • "Dragable a non sizeable form" - 这是一个矛盾。您不能有一个带有“不可调整大小”的可拖动调整大小手柄的窗口。请说明您要完成的工作。
  • 我的表单边框样式是无!所以现在我试图使表单可以用鼠标拖动,这样我就可以拖动表单并更改表单的位置!
  • 欢迎来到 StackOverflow。感谢您花时间分享您的问题。你要求什么不清楚。你的目标和困难是什么?到目前为止你做了什么?请尝试更好地解释您的问题、您的开发环境和数据结构,并分享更多代码(无屏幕截图)、屏幕图像或草图以及用户故事或场景图。为了帮助您改进您的要求,请阅读 How do I ask a good questionWriting the perfect question
  • 您所说的“可拖动”是什么意思:您能解释一下并提供一个用法示例吗?
  • 你知道当你制作一个项目并将你的 formBorderStyle 设置为 None 所以它只是一个不移动的窗口你不能移动它所以我试图让表单能够用我的鼠标移动所以我可以拖动并移动表格。例如,我想让表单可拖动,我可以用鼠标拖动它并将它从一个显示器移动到我的另一个显示器!。

标签: c# visual-studio winforms


【解决方案1】:

您可以将表单的 MouseDown、Up 和 Move 事件与这样的条件变量一起使用:

private bool IsMoving;
private Point LastCursorPosition;

private void FormTest_MouseDown(object sender, MouseEventArgs e)
{
  IsMoving = true;
  LastCursorPosition = Cursor.Position;
}

private void FormTest_MouseUp(object sender, MouseEventArgs e)
{
  IsMoving = false;
}

private void FormTest_MouseMove(object sender, MouseEventArgs e)
{
  if ( IsMoving )
  {
    int x = Left - ( LastCursorPosition.X - Cursor.Position.X );
    int y = Top - ( LastCursorPosition.Y - Cursor.Position.Y );
    Location = new Point(x, y);
    LastCursorPosition = Cursor.Position;
  }
}

它适用于表单的背景,但您也可以将其添加到任何其他控件。

【讨论】:

    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    相关资源
    最近更新 更多