在鼠标向下创建表单,将表单设置为活动状态,并在鼠标移动时开始拖动表单

时间:2018-05-23 17:09:01

标签: c# winforms

对于超长标题,我有一个非常具体的问题。

我要做的是以下内容:

当点击按钮时,按下鼠标按钮时,我想:

  1. 显示表格
  2. 将表单准确放置在我想要的位置。我希望标题栏正好位于鼠标所在的位置。
  3. 在不释放鼠标按钮的情况下,我想开始移动鼠标。我想模仿点击标题栏并开始拖动窗口。
  4. 我主要使用它,但不是窗口的位置。我仍然可以单击并创建表单,但它位于表单左上角所在鼠标光标所在的位置。如果我试图移动窗口,我可以,但是当我移动鼠标时,它只会上下移动并限制在屏幕的X轴上。

    以下是我正在使用的一些代码:

    Form NewForm = new TestForm();
    NewForm.TopLevel = true;
    NewForm.Owner = MainForm;
    NewForm.FormBorderStyle = FormBorderStyle.Sizable;
    
    // Calculate location ratios
    float WidthRatio = (float)MouseCurrentPos.X / (float)TitleRect.Width;
    int PosX = (int)(NewForm.Width * WidthRatio);
    NewForm.SetDesktopLocation(Cursor.Position.X - PosX, Cursor.Position.Y); 
    NewForm.Select();
    NewForm.Activate();
    

    我的主要问题是:

    1. 如何在鼠标按下事件中定位新表单,同时仍然按住鼠标按钮并允许鼠标​​移动并拖动窗口而不会显得很奇怪?
    2. 是否有“官方”方式创建表单并将其设置为“从标题栏拖动窗口”模式?不确定官方术语是什么,但是从标题栏拖动表单时。现在我的代码可以工作,但感觉它是意外工作,而不是以官方方式工作。

0 个答案:

没有答案