这个C#代码怎么了?

时间:2013-04-03 12:41:28

标签: c# winforms

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

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

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

3 个答案:

答案 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();
}