C#WinForms MDI问题

时间:2010-12-26 12:25:50

标签: c# winforms mdi

你好guyes我有一个问题我有1个父表单和3个孩子我只想打开它们最大化但是当我在左侧那样做时,这3个控件。如何在没有此控件的情况下打开一个表单。 如果我以错误的方式做这件事,请告诉我mdi对这些事情有好处吗?

请看这张图片http://img440.imageshack.us/img440/6831/mdinz.jpg http://img139.imageshack.us/img139/4687/mdi1.jpg

2 个答案:

答案 0 :(得分:5)

这是MDI实现中的已知错误,在父构造函数中创建最大化子窗口时会触发该错误。这是一个例子:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        var child = new Form2();
        child.MdiParent = this;
        child.WindowState = FormWindowState.Maximized;
        child.Show();
    }
}

您将看到最小/最大/恢复字形显示两次,恢复子窗口会在屏幕上显示MDI条,就像在第一个屏幕截图中一样。解决方法是将子创建代码移动到OnLoad()方法。像这样:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
    }
    protected override void OnLoad(EventArgs e) {
        base.OnLoad(e);
        var child = new Form2();
        child.MdiParent = this;
        child.WindowState = FormWindowState.Maximized;
        child.Show();
    }
}

答案 1 :(得分:0)

如果您愿意,可以使用ControlBox, FormBorderStyle, MaximizeBoxMinimizeBox属性从表单中删除各种窗口UI元素。