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

Chr*_*isF 34 c# dialog winforms

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

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

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

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

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

  • 我已经尝试过使用dialog.ShowDialog(IWin32Window)重载,但这似乎并不像我那样传递null窗口句柄.

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

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

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

谢谢你的答案 - 我怀疑这是显而易见的,但像往常一样,我一直坚持俯视错误的路线.更令人讨厌的是我也使用过设计师的这个属性.

hea*_*vyd 45

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

MyForm frm = new MyForm();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = new Point(10, 10);
frm.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

  • System.Drawing.Point是Point Class的全名 (3认同)

mic*_*tan 21

我假设你使用的是Form,在这种情况下你可以使用Form.StartPosition枚举.你可以找到更多关于它在这里和枚举行为在这里.


Max*_*ing 5

尝试窗体上的 StartPosition 属性。