![](/img/trans.png)
[英]How to disable check/uncheck of an item in a checkedlistbox in c#
[英]How to programmatically check an item in a CheckedListBox in C#?
我有一个CheckedListBox,我想自动勾选其中的一个项目。
CheckedItems
集合不允许您向其添加内容。
有什么建议?
您需要使用相关项调用SetItemChecked
。
CheckedListBox.ObjectCollection
的文档有一个示例,它检查集合中的每个其他项。
这是您一次选择/勾选或取消选择/取消选中所有项目的方法:
private void SelectAllCheckBoxes(bool CheckThem) {
for (int i = 0; i <= (checkedListBox1.Items.Count - 1); i++) {
if (CheckThem)
{
checkedListBox1.SetItemCheckState(i, CheckState.Checked);
}
else
{
checkedListBox1.SetItemCheckState(i, CheckState.Unchecked);
}
}
}
在我的程序中,我使用了以下技巧:
CheckedListBox.SetItemChecked(CheckedListBox.Items.IndexOf(Item),true);
事情是如何运作的:
SetItemChecked(int index,bool value)是在特定项目处设置精确检查状态的方法。 ) and checked state ( ). 您必须指定要检查的项目的索引( )和选中状态( )。
) the one with specified index. 此方法遍历CheckedListBox中的所有项,并检查( )具有指定索引的项。
), checks it: 例如,我的一小段代码 - FOREACH循环运行指定的程序名称,如果程序包含在CheckedLitBox( )中,则检查它:
string[] ProgramNames = sel_item.SubItems[2].Text.Split(';');
foreach (string Program in ProgramNames)
{
if (edit_mux.CLB_ContainedPrograms.Items.Contains(Program))
edit_mux.CLB_ContainedPrograms.SetItemChecked(edit_mux.CLB_ContainedPrograms.Items.IndexOf(Program), true);
}
假设您要在单击按钮时检查项目。
private void button1_Click(object sender, EventArgs e)
{
checkedListBox1.SetItemChecked(itemIndex, true);
}
其中itemIndex是要检查的项的索引,它从0开始。
使用:
string[] aa = new string[] {"adiii", "yaseen", "salman"};
foreach (string a in aa)
{
checkedListBox1.Items.Add(a);
}
现在代码要检查所有内容:
private void button5_Click(object sender, EventArgs e)
{
for(int a=0; a<checkedListBox1.Items.Count; a++)
checkedListBox1.SetItemChecked(a, true);
}
要取消选中所有:
private void button_Click(object sender, EventArgs e)
{
for(int a=0; a<checkedListBox1.Items.Count; a++)
checkedListBox1.SetItemChecked(a, false);
}
我使用扩展名:
public static class CheckedListBoxExtension
{
public static void CheckAll(this CheckedListBox listbox)
{
Check(listbox, true);
}
public static void UncheckAll(this CheckedListBox listbox)
{
Check(listbox, false);
}
private static void Check(this CheckedListBox listbox, bool check)
{
Enumerable.Range(0, listbox.Items.Count).ToList().ForEach(x => listbox.SetItemChecked(x, check));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.