簡體   English   中英

從列表或數據集設置checkedlistbox中的選中項

[英]Set checked items in checkedlistbox from list or dataset

我有一個 CheckedListBox,我想檢查另一個列表中的所有項目。 此代碼不起作用,因為 CheckedItems 屬性是只讀的並且類型不匹配,但它提供了我想要做什么的最佳想法。

    checkedListBox1.DataSource = DataSetSelectAll().Tables[0];
    checkedListBox1.ValueMember = "id_table";
    checkedListBox1.DisplayMember = "name";

    List<tableClass> list = MyCheckedList();
    checkedListBox1.CheckedItems = list;

我知道這是錯誤的,但不知道如何更好地解釋它。

不可能像這樣一次設置(檢查)多個項目,checkedListBox1.CheckedItems = list;

你可以更好地使用for 循環,如:

List<tableClass> list = MyCheckedList();
for (int count = 0; count < checkedListBox1.Items.Count; count++)
{
  if (list.Contains(checkedListBox1.Items[count].ToString()))
  {
    checkedListBox1.SetItemChecked(count, true);
  }
}

安迪的回答是正確的,但我有一個更簡單的解決方案。 我的解決方案適用於 Windows 應用程序。

DataTable dt = MyCheckedList();
foreach (DataRow dr in dt.Rows)
{
      for (int i = 0; i < checkedListBox1.Items.Count; i++)
       {
          if (dr["valueMember"].ToString() == ((DataRowView)checkedListBox1.Items[i])[0].ToString())
            {
                checkedListBox1.SetItemChecked(i, true);
            }
       }
}

注意: dt必須填充一個包含所有檢查列表值的數據表。

我不知道為什么,但我SetItemChecked(index, tf)沒有給我我想要的。 這就是我解決它的方法 - 顯式設置 CheckedState。

for (int i = 0; i < myCheckedListBox.Items.Count; i++)
{
    if (boolList[i])
    {
        myCheckedListBox.SetItemCheckState(i, CheckState.Checked);
    } else
    {
        myCheckedListBox.SetItemCheckState(i, CheckState.Unchecked);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM