1

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

在此处输入图像描述

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

在此处输入图像描述

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

4

1 回答 1

6

为什么不使用用户控件,然后您可以从主窗体中添加/删除它们,它们不会像 Mdi 窗体那样产生开销。

一个快速而肮脏的示例,您将希望在 UserControl 上设置属性和事件,以将数据传入和传出主窗体:

表格1

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());
    }
}
于 2012-06-07T15:10:55.673 回答