我的主窗体使用.ShowDialog
启动另一个作为模态对话框。我想根据鼠标位置来定位它,但是我调用SetDesktopLocation
的尝试没有效果。这是正确的方法吗?
由于
答案 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表示鼠标位置。