将两种形式移动到一起而不改变两种形式的位置(后面或前面)

时间:2014-02-18 00:02:50

标签: c# windows winforms

我对C#很新。最近,我遇到了一个问题,即我想把两种不同的形式放在一起。

更详细,

一个大表单(即作为父窗口的东西)弹出一个小表单。

我想要做的是通过移动父窗口同时移动这两个表单。

而且,现在我通过Form的“Show()”方法创建子(小)形式。 问题是,如果我点击父表单,一个小表单将在父表单后面(即更大的表单)。

我知道这是应该发生的事情。但是,我希望通过移动较大的形式来移动这两种形式,同时保持小形式在前面。

我还考虑使用“ShowDialog()”。但是,这阻止了我移动更大的父母。我无法触摸父窗口。

1 个答案:

答案 0 :(得分:2)

将子表单的所有者属性设置为父表单:

this.childForm = new ChildFormClass();
child.Owner = this;
viewForm.ShowDialog();
//Can also be called like this instead of setting Owner property:
//viewForm.ShowDialog(this);

参考:http://msdn.microsoft.com/en-us/library/system.windows.forms.form.owner.aspx

这样,子表单永远不会显示在父表单后面。

编辑:

要将两个表单一起移动,只需处理父表单的Move事件:

private void Form1_Move(object sender, EventArgs e)
{
    Point p = this.PointToScreen(new Point(this.ClientRectangle.X, this.ClientRectangle.Y));
    this.childForm.Location = p; //childForm needs to be a class member
}

干杯