如何移动Winform对话框

时间:2010-03-20 16:21:15

标签: c# winforms

我的主窗体使用.ShowDialog启动另一个作为模态对话框。我想根据鼠标位置来定位它,但是我调用SetDesktopLocation的尝试没有效果。这是正确的方法吗?

由于

3 个答案:

答案 0 :(得分:6)

为了在表单可见之前以编程方式设置表单的位置,您需要将StartPosition属性设置为Manual,然后将Location属性设置为所需的位置。 / p>

using(Form toShow = new YourForm())
{
    toShow.StartPosition = FormStartPosition.Manual;
    toShow.Location = MousePosition;

    toShow.ShowDialog();
}

答案 1 :(得分:3)

另外,不要忘记模态对话会暂停其他表单上的执行,直到它们被关闭为止 - 所以你需要使用对话框本身进行定位,而不是在开启者的后续行中 - 因为它们不会在对话结束之前被召唤。

另外,检查表单的StartPosition是否设置为Manual

答案 2 :(得分:2)

您可以在新表单的onLoad()方法中尝试此操作:

this.Location = new Point(paramX, paramY);

其中paramX和paramY表示鼠标位置。