非MDI C ++ / CLI应用程序中的级联窗口

时间:2014-08-19 07:30:24

标签: c# c++ modal-dialog

我想在我的应用程序中实现级联布局。 我不能按照以下答案使用FormStartPosition.WindowsDefaultLocation

C# Cascading forms without mdi parent?

即使使用这种方法实现了级联,每次窗口都会出现在不同的不同位置。

我希望在固定位置显示窗口,最好从CentreScreen开始并向底部方向移动

额外信息:这是一个托盘图标应用程序,通过调用ShowDialog()以模态方式显示每个表单。

请帮助!!

谢谢&的问候,

罗希尼

1 个答案:

答案 0 :(得分:0)

如果你要以模态Form.ShowDialog()显示窗口,我不确定是否真的需要级联布局。只需设置StartPosition = FormStartPosition.CenterParent就可以了。

如果您真的坚持要进行手动级联,请将Form.StartPosition设置为FormStartPosition.Manual。这使您可以通过Form属性定义Form.Location的起点。

通常情况下,您应该覆盖Form.OnLoad(EventArgs e),并根据Form.Owner

的位置来处理您的起始位置
protected override void OnLoad(EventArgs e)
{
     base.OnLoad(e);

     if (this.Owner != null)
     {
         this.Location = .... // offset this.Owner.Location
     }
}

请注意,Form.Location位于全局屏幕坐标中,但在使用偏移时它没有任何区别。