我正在重写一个最初用FoxPro编写的程序,该程序由城镇和学校税务人员使用。不幸的是,我正在学习这个。该程序要求窗口是模态的 - 用户遵循特定的路径,并且不能一次玩多个窗口。我有一个打开的MDI容器表单。所有的儿童形式都是从那里打来的。现在,我没有最大化子表单,它看起来像这样:
您可以看到滚动条,因为它没有最大化。我真的不希望他们处理滚动条......所以我进入我的表单Login,子表单,并将WindowState设置为最大化。我明白了:
滚动条消失了,子窗口完全适合容器窗口,但顶部有两个控制栏......容器的主控制器和子窗体的第二个较小的控制条,第二个有双重控制。我已经尝试将MaximizeBox,MinimizeBox,ShowIcon和ControlBox设置为false,并删除了子窗体的Text,但该栏仍然存在。如果我点击较小栏上的某些按钮,副本就会消失。我正在寻找摆脱第二个柱子的方法,或者隐藏它上面的控件...或者我没有想到的任何可以帮助的东西。
答案 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());
}
}