TabPages按照CheckedListBox

时间:2014-04-14 11:03:39

标签: c# tabcontrol tabpage

我有一个带有4个tabpages的tabcontrol。我有一个带有8个项目的Checked列表框。我想打开在checkedlistbox中检查过的tabpages。我试过这样。

      private void clbScenario_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        if (clbScenario.SelectedIndex == 0 || clbScenario.SelectedIndex == 1 || clbScenario.SelectedIndex == 2 || clbScenario.SelectedIndex == 3 || clbScenario.SelectedIndex == 4)
        {
            tabControl1.TabPages.Add(tp1);

        }
        else
            HideTabPage(tp1);
        if (clbScenario.SelectedIndex == 5 || clbScenario.SelectedIndex == 8)
        {
            tabControl1.TabPages.Add(tp2);
            //ShowTabPage(tp2);
        }
        else
            HideTabPage(tp2);
        if (clbScenario.SelectedIndex == 6)
        {
            tabControl1.TabPages.Add(tp3);

        }
        else
            HideTabPage(tp3);
        if (clbScenario.SelectedIndex == 7)
        {
            tabControl1.TabPages.Add(tp4);

        }
        else
            HideTabPage(tp4);
    }

但结果并不像我想的那样。请帮助我任何人

1 个答案:

答案 0 :(得分:1)

您需要使用ItemCheckEventArgs e而不是CheckedListBox本身。 e.index会给你检查/取消选中哪个项目,e.CurrentValue会给你检查/取消选中项目。您需要考虑的是e.CurrentValue是否为unchecked,这意味着它实际上将是checked,因为这会在流程之前显示控件的值。

private void clbScenario_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (e.Index >= 0 && e.Index <= 4)
    {
        if (e.CurrentValue.ToString() == "Unchecked") tabControl1.TabPages.Add(tp1);
        else HideTabPage(tp1);
    }        
    else if (e.Index == 5 || e.Index == 8)
    {
        if (e.CurrentValue.ToString() == "Unchecked") tabControl1.TabPages.Add(tp2);
        else HideTabPage(tp2);
    }        
    else if (e.Index == 6)
    {
        if (e.CurrentValue.ToString() == "Unchecked") tabControl1.TabPages.Add(tp3);
        HideTabPage(tp3);
    }        

    else if (e.Index == 7)
    {
        if (e.CurrentValue.ToString() == "Unchecked") tabControl1.TabPages.Add(tp4);
        else HideTabPage(tp4);
    }
}