我有一个拆分容器,我需要能够显示和隐藏。
我尝试使用以下代码将拆分容器“连接”到按钮:
if (toolStripButton2.Checked == false)
{
toolStripButton2.Checked = true;
this.WindowState = FormWindowState.Maximized;
splitContainer1.Panel2Collapsed = false;
splitContainer1.Panel2.Show();
}
if (toolStripButton2.Checked == true)
{
toolStripButton2.Checked = false;
splitContainer1.Panel2Collapsed = true;
splitContainer1.Panel2.Hide();
}
但它似乎不起作用。我看不出代码的任何问题。也许我忽略了什么?
有什么想法吗?
- 编辑 -
为了正确显示panel2的内容,我需要最大化表单。
答案 0 :(得分:8)
您的代码中似乎存在逻辑错误。如果Checked
状态为False
,则将其设置为True
,这意味着您的第二个if
语句将为true,代码将在其中运行。
请尝试使用else
语句:
if (toolStripButton2.Checked == false)
{
toolStripButton2.Checked = true;
this.WindowState = FormWindowState.Maximized;
splitContainer1.Panel2Collapsed = false;
splitContainer1.Panel2.Show();
}
else
{
toolStripButton2.Checked = false;
splitContainer1.Panel2Collapsed = true;
splitContainer1.Panel2.Hide();
}
答案 1 :(得分:5)
你在哪里运行这段代码?您可能希望捕获按钮上的CheckChanged
事件。在表单OnLoad
:
toolStripButton2.CheckChanged += toolStripButton2_CheckChanged;
并放置以下处理程序,该处理程序将在检查更改后执行:
public void toolStripButton2_CheckChanged(object sender, EventArgs e)
{
if (toolStripButton2.Checked)
{
splitContainer1.Panel2Collapsed = true;
splitContainer1.Panel2.Hide();
}
else
{
splitContainer1.Panel2Collapsed = false;
splitContainer1.Panel2.Show();
}
}
由于此检查程序在检查更改后运行,因此您无需手动设置检查状态!如果您将检查状态设置为false
true
(或相反),您将有效 UNDO 更改。
答案 2 :(得分:2)
不应该是:
if (toolStripButton2.Checked == false)
{
toolStripButton2.Checked = true;
this.WindowState = FormWindowState.Maximized;
splitContainer1.Panel2Collapsed = false;
splitContainer1.Panel2.Show();
}
else //toolStripButton2.Checked == true
{
toolStripButton2.Checked = false;
splitContainer1.Panel2Collapsed = true;
splitContainer1.Panel2.Hide();
}