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

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

滚动条消失了,子窗口完全适合容器窗口,但顶部有两个控制条...容器的主要控制条,子形式的第二个较小的控制条,第二个有双重控制.我已经尝试将MaximizeBox,MinimizeBox,ShowIcon和ControlBox设置为false,并删除了子窗体的Text,但该栏仍然存在.如果我点击较小栏上的某些按钮,副本就会消失.我正在寻找摆脱第二个柱子的方法,或者隐藏它上面的控件......或者我没有想到的任何可以帮助的东西.
为什么不使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
用户控件
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());
}
}
Run Code Online (Sandbox Code Playgroud)