选项卡页面符合CheckedListBox

本文关键字:CheckedListBox 选项 | 更新日期: 2023-09-27 17:58:24

我有一个包含4个选项卡页的选项卡控件。我有一个包含8项的复选框。我想打开已选中列表框中已选中的选项卡页。我试过了。

      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);
    }

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

选项卡页面符合CheckedListBox

您需要使用ItemCheckEventArgs e,而不是CheckedListBox本身。e.index会给你哪个项目被检查/未检查,e.CurrentValue会给你什么项目被检查或未检查。您需要考虑的是,如果e.CurrentValueunchecked,这意味着它实际上将是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);
    }
}