如何打开与面板位置或特定控制位置相关的对话框

时间:2014-05-20 17:29:59

标签: c# windows winforms

单击按钮时,我想打开一个对话框,此对话框位置将是 在中心小组

我尝试这段代码,但它不起作用:

        FormDialog f = new FormDialog();
        f.Parent = panel1;
        f.StartPosition = FormStartPosition.CenterParent;

Open Dialog

2 个答案:

答案 0 :(得分:2)

编辑:我将坐标更改为屏幕坐标。面板的Left和Top是从容器的边缘计算出来的,而SetDesktopLocation则是预期的屏幕坐标。

在这种情况下,表单的父属性指向父表单而不是面板。为了在特定位置显示表单,您可以执行以下操作:

frm.StartPosition = FormStartPosition.Manual;
Point p = panel1.PointToScreen(new Point(panel1.Width / 2, panel1.Height / 2));
frm.SetDesktopLocation(p.X, p.Y);
frm.Show(this);

答案 1 :(得分:1)

您可以手动设置位置。首先,您可以在屏幕上获取panel的中心位置,然后将表单放在此坐标处。

Form2 f = new Form2();
f.StartPosition = FormStartPosition.Manual;
Point panelCenterPosition = panel1.PointToScreen(new Point(panel1.Width / 2, panel1.Height / 2));
f.SetDesktopLocation(panelCenterPosition.X - f.Width/2, panelCenterPosition.Y - f.Height/2);
f.ShowDialog();