我正在重写一个最初用 FoxPro 编写的程序,供城镇和学校的税务人员使用。不幸的是,我正在学习这个。该程序要求窗口是模态的——用户遵循特定的路径,并且一次不能玩多个窗口。我有一个打开的 MDI 容器窗体。从那里调用所有子窗体。现在,我没有最大化子窗体,它看起来像这样:
您可以看到滚动条,因为它没有最大化。我真的不想让他们处理滚动条......所以我进入我的表单登录,子表单,并将 WindowState 设置为最大化。我明白了:
滚动条不见了,子窗口完全适合容器窗口,但顶部有两个控制条......主要的一个用于容器,第二个较小的用于子窗体,带有第二个有双重控制。我已尝试将 MaximizeBox、MinimizeBox、ShowIcon 和 ControlBox 设置为 false,并删除了子窗体的文本,但该栏仍然存在。如果我单击较小栏上的某些按钮,重复项就会消失。我正在寻找一种方法来摆脱第二个栏,或者隐藏它上面的控件......或者任何我没有想到的可以帮助的东西。
最佳答案
为什么不使用 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());
}
}
关于c# - 在 C# WinForms 中,如何摆脱 child 的控制栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10934425/