2009-06-15 103 views
32

这是一个非常微不足道的问题,但我似乎无法找到解决方法。这很烦人,因为我觉得我应该知道这个答案,但是我要么搜索错误的术语,要么寻找错误的方法和属性。如何在使用ShowDialog显示对话框时控制对话框的位置?

我会有从两个地方称为配置对话框。

首先是从工作正常的窗体上的按钮 - 如你所期望的。

二是从系统托盘NotifyIcon的上下文菜单,但在这里它出现在屏幕的左上角。理想情况下,我希望它显示在主屏幕上,或者可能靠近系统托盘。

  • 我已经尝试设置Location,但出现时dialog.ShowDialog()被称为被覆盖。

  • 我试过使用dialog.ShowDialog(IWin32Window)超负荷,但似乎并不喜欢我通过null作为窗口句柄。

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

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

我只知道,我要认识到,答案是显而易见的,当我(希望)看到一些答案,但此刻我是完全被卡住。

谢谢你的答案 - 我怀疑这是显而易见的,但像往常一样是我让自己陷入到向下看走错路线。更令人讨厌的是我也从设计师那里使用了这个属性。

+1

有同样的问题。对我来说,它负责在Load事件期间设置位置 – TomB 2015-03-26 15:06:59

回答

38

您可以将Form.StartPosition属性设置为FormStartPosition.Manual,然后将Form.Location属性设置为您想要的位置。当您拨打ShowDialog时,表格应显示在所需位置。

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

System.Drawing.Point是Point Class的全名 – Argeman 2015-08-12 08:56:39

21

我假设你正在使用一种形式,在这种情况下,你可以使用Form.StartPosition枚举。你可以找到更多关于它here和枚举行为here

4

尝试窗体上的StartPosition属性。