我正在使用Windows窗体应用程序.我想要check/uncheck在checkedlistbox中的所有复选框.
我正在使用以下代码动态生成复选框.
var CheckCollection = new List<CheckedBoxFiller>();
foreach (DataRow dr in dt.Rows)
CheckCollection.Add(new CheckedBoxFiller {
Text = dr["ImageName"].ToString(),
Value = dr["ImageId"].ToString()
});
chklbEvidenceTags.DataSource = CheckCollection;
chklbEvidenceTags.DisplayMember = "Text";
chklbEvidenceTags.ValueMember = "Value";
Run Code Online (Sandbox Code Playgroud)
这是CheckboxFiller类
private class CheckedBoxFiller {
public string Text { get; set; }
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我想check/Uncheck all checkboxes.我怎样才能做到这一点?
任何帮助都会有用.
Har*_*dik 17
我找到了解决方案
for (int i = 0; i < chklistbox.Items.Count; i++)
chklistbox.SetItemCheckState(i, (state ? CheckState.Checked : CheckState.Unchecked));
Run Code Online (Sandbox Code Playgroud)
state是boolen有价值的.
brs*_*fan 10
如果您有一个大项目列表,这种方法对于取消选中项目可能会更有效.它要求您只循环实际检查的项目:
private void UncheckAllItems()
{
while (chklistbox.CheckedIndices.Count > 0)
chklistbox.SetItemChecked(chklistbox.CheckedIndices[0], false);
}
Run Code Online (Sandbox Code Playgroud)
如果您在整个项目中使用多个CheckedListBox控件并希望更进一步,可以将其添加为扩展方法:
public static class AppExtensions
{
public static void UncheckAllItems(this System.Windows.Forms.CheckedListBox clb)
{
while (clb.CheckedIndices.Count > 0)
clb.SetItemChecked(clb.CheckedIndices[0], false);
}
}
Run Code Online (Sandbox Code Playgroud)
扩展方法调用:
chklistbox.UncheckAllItems();
Run Code Online (Sandbox Code Playgroud)
选中/取消选中下面代码编写的所有列表项:
if (checkBox1.Checked)
{
for (int i = 0; i < chkboxlst.Items.Count; i++)
{
chkboxlst.SetItemChecked(i, true);
}
}
else
{
for (int i = 0; i < chkboxlst.Items.Count; i++)
{
chkboxlst.SetItemChecked(i, false);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32834 次 |
| 最近记录: |