我有一个带有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);
}
但结果并不像我想的那样。请帮助我任何人
答案 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);
}
}