限制 CheckedListBox 中的选中项
Limit checked items in CheckedListBox
我有一个带有折线图的主窗体,它可以显示 10 个可能的系列。这些系列中的数据将由用户输入到文本框中并添加到相应的列表<>中,然后将逐个索引地传输到相应的图表系列中。
我已经设置了一个名为“选项”的辅助表单,我希望它允许用户随时控制显示哪些系列。我尝试使用项目名称与图表系列名称匹配的选中列表框来执行此操作。
这工作得很好,但我的用户要求一次只能在图表上显示两个系列以避免混淆。
我正在寻找一种对已检查列表框进行编程的方法,以便在检查了两个项目后,在删除一个现有检查之前不能再检查。
这似乎是一个非常简单的概念,但我似乎无法找到如何 'disable' 一个一个地列出列表项。这是我目前拥有的:
public void disableUnchecked()
{
int checkedCount = 0; //tracks how many items are already checked
//loop through all items in listbox
for (int index = 0; index < chListBoxChartSeries.Items.Count; ++index)
{
//if item is checked
if (chListBoxChartSeries.CheckedItems.Contains(chListBoxChartSeries.Items[index]))
{
//increment tracker variable
++checkedCount;
}
}
//once loop has finished, if 2 items are checked
if (checkedCount == 2)
{
//don't let anything else be checked
//something to disable unchecked items
}
}
我认为我离目标不远,只需要找到一种方法来访问和禁用各个项目。如果有人能指出正确的方向,我将不胜感激!
谢谢
马克
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked && checkedListBox1.CheckedItems.Count >= 2)
e.NewValue = CheckState.Unchecked;
}
我有一个带有折线图的主窗体,它可以显示 10 个可能的系列。这些系列中的数据将由用户输入到文本框中并添加到相应的列表<>中,然后将逐个索引地传输到相应的图表系列中。
我已经设置了一个名为“选项”的辅助表单,我希望它允许用户随时控制显示哪些系列。我尝试使用项目名称与图表系列名称匹配的选中列表框来执行此操作。 这工作得很好,但我的用户要求一次只能在图表上显示两个系列以避免混淆。
我正在寻找一种对已检查列表框进行编程的方法,以便在检查了两个项目后,在删除一个现有检查之前不能再检查。 这似乎是一个非常简单的概念,但我似乎无法找到如何 'disable' 一个一个地列出列表项。这是我目前拥有的:
public void disableUnchecked()
{
int checkedCount = 0; //tracks how many items are already checked
//loop through all items in listbox
for (int index = 0; index < chListBoxChartSeries.Items.Count; ++index)
{
//if item is checked
if (chListBoxChartSeries.CheckedItems.Contains(chListBoxChartSeries.Items[index]))
{
//increment tracker variable
++checkedCount;
}
}
//once loop has finished, if 2 items are checked
if (checkedCount == 2)
{
//don't let anything else be checked
//something to disable unchecked items
}
}
我认为我离目标不远,只需要找到一种方法来访问和禁用各个项目。如果有人能指出正确的方向,我将不胜感激!
谢谢
马克
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked && checkedListBox1.CheckedItems.Count >= 2)
e.NewValue = CheckState.Unchecked;
}