代码之家  ›  专栏  ›  技术社区  ›  ChrisF

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

  •  32
  • ChrisF  · 技术社区  · 15 年前

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

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

    第一个按钮来自正确工作的表单-正如您所期望的。

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

    • 我试过设置 Location ,但当 dialog.ShowDialog() 被称为。

    • 我试过用 dialog.ShowDialog(IWin32Window) 超载,但那似乎不喜欢我路过 null 作为窗户的把手。

    • 我试过用 dialog.Show() 相反,但是(这也是我可能出错的地方)设置位置似乎不能给出一致的结果。

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

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

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

    3 回复  |  直到 6 年前
        1
  •  42
  •   heavyd    9 年前

    您可以设置 Form.StartPosition 属性到 FormStartPosition.Manual 然后设置 Form.Location 属性设置为所需位置。当你打电话 ShowDialog 表单应显示在所需位置。

    MyForm frm = new MyForm();
    frm.StartPosition = FormStartPosition.Manual;
    frm.Location = new Point(10, 10);
    frm.ShowDialog();
    
        2
  •  21
  •   micahtan    15 年前

    我假设您使用的是窗体,在这种情况下,您可以使用Form.StartPosition枚举。你可以找到更多关于它的信息 here 以及枚举行为 here .

        3
  •  4
  •   Max Schmeling    15 年前

    尝试窗体上的StartPosition属性。