在C#WinForms中,我怎样才能摆脱孩子的控制栏?

时间:2012-06-07 15:01:06

标签: c# winforms user-controls childwindow maximize

我正在重写一个最初用FoxPro编写的程序,该程序由城镇和学校税务人员使用。不幸的是,我正在学习这个。该程序要求窗口是模态的 - 用户遵循特定的路径,并且不能一次玩多个窗口。我有一个打开的MDI容器表单。所有的儿童形式都是从那里打来的。现在,我没有最大化子表单,它看起来像这样:

enter image description here

您可以看到滚动条,因为它没有最大化。我真的不希望他们处理滚动条......所以我进入我的表单Login,子表单,并将WindowState设置为最大化。我明白了:

enter image description here

滚动条消失了,子窗口完全适合容器窗口,但顶部有两个控制栏......容器的主控制器和子窗体的第二个较小的控制条,第二个有双重控制。我已经尝试将MaximizeBox,MinimizeBox,ShowIcon和ControlBox设置为false,并删除了子窗体的Text,但该栏仍然存在。如果我点击较小栏上的某些按钮,副本就会消失。我正在寻找摆脱第二个柱子的方法,或者隐藏它上面的控件...或者我没有想到的任何可以帮助的东西。

1 个答案:

答案 0 :(得分:6)

为什么不使用UserControls然后你可以在主表单中添加/删除它们,它们不会有你使用Mdi Forms的开销。

一个快速而又脏的示例,您将要在UserControl上设置属性和事件,以便与主表单之间传递数据:

<强> Form1中

public partial class Form1 : Form
{
    UserControl1 login = new UserControl1();
    public Form1()
    {
        InitializeComponent();
        login.ExitEvent += new UserControl1.ExitEventHandler(login_ExitEvent);

    }

    void login_ExitEvent(object sender, EventArgs e)
    {
        panel1.Controls.Remove(login);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        panel1.Controls.Add(login);
        login.BringToFront();
    }
}

<强>用户控件

public partial class UserControl1 : UserControl
{
    public delegate void ExitEventHandler(object sender, EventArgs e);
    public event ExitEventHandler ExitEvent; 

    public UserControl1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        ExitEvent(this, new EventArgs());
    }
}
相关问题