选项卡页面符合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);
}
但结果并不像我想的那样。请帮助我任何人
您需要使用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);
}
}