c #Windows表单:
有没有办法制作一个显示一个特定面板的按钮并隐藏所有其他面板?
这样的事情:
private void button1_Click(object sender, EventArgs e)
{
panel1.Visible = true;
!panel1.Visible = false;
}
答案 0 :(得分:0)
您可以循环浏览表单上的Controls
集合,并将所有Panel
控件设置为隐藏,然后再显示所需的控件。类似的东西:
private void HidePanels()
{
foreach (var control in Controls)
if (control is Panel)
((Panel)control).Visible = false;
}
private void button1_Click(object sender, EventArgs e)
{
HidePanels();
panel1.Visible = true;
}
如果您将面板嵌套在其他控件中,则可能无法证明这一点。我使用表格已经有一段时间了,所以我不能肯定地说这有多大可能性。但是可以做的一件事就是保留一个显式的面板列表,您希望在其中应用逻辑。像这样:
private IEnumerable<Panel> _panels;
private IEnumerable<Panel> Panels
{
get
{
if (_panels = null)
_panels = new List<Panel>
{
Panel1,
Panel2,
Panel3,
// etc...
}
return _panels;
}
}
然后循环访问而不是Controls
集合:
private void HidePanels()
{
foreach (var panel in Panels)
panel.Visible = false;
}
private void button1_Click(object sender, EventArgs e)
{
HidePanels();
panel1.Visible = true;
}
这将消除类型转换中的任何错误可能性,并让您更明确地控制要显示或隐藏的面板,因为您可能希望使用面板来处理与此处显示/隐藏的面板无关的其他内容操作
答案 1 :(得分:-1)
只需创建带事件的按钮单击一个面板集可见true,所有其他面板设置为false:
private void button1_Click(object sender, EventArgs e)
{
panel1.Visible = true;
panel2.Visible = false;
panel3.Visible = false;
}