0

我有一个拆分容器,我需要能够显示和隐藏它。

我尝试使用以下代码将拆分容器“连接”到按钮:

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 的内容正确显示,我需要最大化表单。

4

3 回答 3

8

看起来您的代码中有逻辑错误。如果Checked状态为False,则将其设置为True,这意味着您的第二if条语句将为真,并且代码将在其中运行。

尝试改用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();
}
于 2013-04-03T12:44:53.127 回答
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();
    }
}

由于此处理程序在检查更改后运行,因此您无需手动设置检查状态!如果您将检查状态设置为何falsetrue(或相反),您将有效地撤消更改。

于 2013-04-03T12:48:08.833 回答
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();
}
于 2013-04-03T12:45:09.193 回答