显示MDI子窗体时,子窗体在顶部被剪切

本文关键字:窗体 顶部 MDI 显示 | 更新日期: 2023-09-27 18:26:20

我有一个用VS2012(C#)编写的Winforms应用程序的问题。经过大量的研究和尝试,我把它发布在这里,但没有成功。

我有两个MDI子窗体和一个父窗体,用于在它们之间切换。第一次加载child1后,MDI表单看起来像是被向上推的,其顶部被隐藏,看不见;此问题在第二次单击后得到解决。

这是child1的来源,与child2 的代码相同

public partial class Child1 : Form
{
    public Child1()
    {
        InitializeComponent();
        panel1.Dock = DockStyle.Top; 
        StationFormUtils.SetPanelHeaderDefinitions(panel1);
    }
    private void Child_Load(object sender, EventArgs e)
    {
        //removes the child bar
        this.MaximizeBox = false;
    }
}
public static void SetPanelHeaderDefinitions(Panel panel)
{
    panel.Size = new System.Drawing.Size(BaseClass.StationTableWidth, BaseClass.StationHeaderHeight);
    panel.BackgroundImage = global::TestMdi.Properties.Resources.StationHeaderStrip;
    panel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Tile;
}

这是父级的源代码

public partial class Form1 : Form
{
    private Child1 ChildMainFrm1 = new Child1();
    private Child2 ChildMainFrm2 = new Child2();
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        ChildMainFrm1.MdiParent = this;
        ChildMainFrm1.WindowState = FormWindowState.Maximized;
        ChildMainFrm1.Show();
    }
    private void button2_Click(object sender, EventArgs e)
    {
        ChildMainFrm2.MdiParent = this;
        ChildMainFrm2.WindowState = FormWindowState.Maximized;
        ChildMainFrm2.Show();
    }
}

有人知道我做错了什么,或者我错过了什么吗?

显示MDI子窗体时,子窗体在顶部被剪切

我在大量搜索和尝试人们推荐的各种东西后偶然发现了这篇文章,因为我在VS2022中遇到了类似的问题。就像评论中提到的LarsTech一样,通过编程或在窗体的属性中设置子窗体的FormBorderStyle = Sizable

值得注意的是,如果要隐藏所有子窗体的控制框和顶部栏(左上角包含最大化/最小化/关闭按钮以及窗体的名称和图标),请将MenuStrip控件固定到应用程序的MDi父窗体的顶部。然后,在InitializeComponent()函数所在的MDi Parent代码后面设置menuStrip1.Visible = false。如果您更改了MenuStrip控件的实际名称,请确保使用该名称更改menuStrip1。任何子窗体的控件框和顶部栏现在都将消失。

有些帖子会说您需要设置子窗体的WindowState = Maximized,但这只是部分正确的。如果你只有一个子窗体,那么你需要这个。但是,如果您有多个子窗体一个接一个地出现(例如,我的应用程序根据不同的按钮关闭和打开不同的子窗体),那么您只需要有一个具有此属性集的子窗体(第一次出现在应用程序中的子形式)。

我希望这对任何看到这篇文章的人都有帮助,就像它对我有帮助一样!