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

C# 使用ShowDialog显示对话框时,如何控制对话框的位置?,c#,winforms,dialog,C#,Winforms,Dialog,这是一个非常琐碎的问题,但我似乎找不到解决它的方法。这让我很恼火,因为我觉得我应该知道这个问题的答案,但我不是在寻找错误的术语,就是在寻找错误的方法和属性 我有一个从两个地方调用的配置对话框 第一个是表单上的按钮,它工作正常-正如您所期望的那样 第二个来自系统托盘中Notify图标上的上下文菜单,但在这里它显示在屏幕的左上角。理想情况下,我希望它出现在主屏幕的中心,或者可能靠近系统托盘 我已尝试设置位置,但在调用dialog.ShowDialog()时,这似乎被覆盖 我尝试过使用dialog.

这是一个非常琐碎的问题,但我似乎找不到解决它的方法。这让我很恼火,因为我觉得我应该知道这个问题的答案,但我不是在寻找错误的术语,就是在寻找错误的方法和属性

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

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

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

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

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

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

  • 我甚至尝试过设置
    dialog.Parent
    属性,这当然引发了一个异常

我只知道当我(希望)看到一些答案时,我会意识到答案是显而易见的,但目前我完全被卡住了


谢谢你的回答——我怀疑这是显而易见的,但像往常一样,我让自己陷入了寻找错误路线的困境。更令人恼火的是,我也使用了设计器中的此属性。

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

尝试表单上的StartPosition属性。

您可以将属性设置为
FormStartPosition.Manual
,然后将属性设置为所需位置。调用
ShowDialog
时,表单应显示在所需位置

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

我也有同样的问题。对我来说,在加载eventSystem时设置位置很有效。Drawing.Point是Point类的全名