使用ShowDialog显示时,如何控制对话框的位置?

时间:2009-06-15 22:09:18

标签: c# winforms dialog

这是一个非常微不足道的问题,但我似乎无法找到解决问题的方法。这让我感到烦恼,因为我觉得我应该知道这个问题的答案,但我要么是在寻找错误的术语,要么是在寻找错误的方法和属性。

我有一个从两个地方调用的配置对话框。

第一个是从表单上的按钮开始正常工作 - 正如您所期望的那样。

第二个来自系统托盘中notifyIcon的上下文菜单,但此处显示在屏幕的左上角。理想情况下,我希望它显示在主屏幕的中心,或者可能靠近系统托盘。

  • 我已尝试设置Location,但在调用dialog.ShowDialog()时,这似乎被覆盖了。

  • 我已尝试使用dialog.ShowDialog(IWin32Window)重载,但似乎不希望我将null作为窗口句柄传递。

  • 我尝试使用dialog.Show()代替,但(这是我可能出错的地方)设置位置似乎不会产生一致的结果。

  • 我甚至尝试设置dialog.Parent属性 - 这当然会引发异常。

我只知道当我(希望)看到一些答案时,我会意识到答案是显而易见的,但此刻我完全陷入困境。

感谢您的回答 - 我怀疑这很明显,但是像往常一样,我会让自己陷入错误的路线。更令人讨厌的是我也使用过设计师的这个属性。

3 个答案:

答案 0 :(得分:42)

您可以将Form.StartPosition属性设置为FormStartPosition.Manual,然后将Form.Location属性设置为所需的位置。当您致电ShowDialog时,表单应显示在所需位置。

MyForm frm = new MyForm();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = new Point(10, 10);
frm.ShowDialog();

答案 1 :(得分:21)

我假设您正在使用表单,在这种情况下,您可以使用Form.StartPosition枚举。您可以找到有关它的更多信息here和枚举行为here

答案 2 :(得分:4)

尝试表单上的StartPosition属性。

相关问题