2016-06-20 4 views
0

私はいくつかのデータを格納した辞書を持っているcの辞書のWinformsにアイテムを選択し取得しますすべてが完璧に機能します。今、私はにCheckedListBoxで選択した項目(ペアからブール値を更新)して辞書を更新する必要があります。はにCheckedListBoxが#

私は辞書にペアのすべての人を割り当てるためのforeachを作ってみましたが、CheckedListBox.Itemsは、インデックスが必要です。

たぶん、辞書には、このデータを保存するのに最適な構造ではありません。

Antの考えですか?

+0

が重複する可能性を(http://stackoverflow.com/questions/7485631/winforms-how-to-bind-the-checkbox-item-of-a-checkedlistbo:[データバインディングとにCheckedListBoxのチェックボックス項目をバインドする方法のWinforms]のX-と、データバインディング) –

+0

@RezaAghaeiないすべての項目がチェックされます。 –

答えて

0

私は、次の操作を行って、私の問題を解決:

 for (int i = 0; i < myCheckedListBox.Items.Count; i++) 
     { 
      string key = (String)myCheckedListBox.Items[i]; 
      _myDictionary[key] = myCheckedListBox.GetItemChecked(i); 
     } 
0

あなたのcheckedListBox1バインドするために、このような何かを行うことができます。

(手動での変更を追跡する必要があります)

 var list = new List<RandomClass>() 
     { 
      new RandomClass() {Checked = true, ValueDisplayed = "1"}, 
      new RandomClass() {Checked = false, ValueDisplayed = "2"}, 
      new RandomClass() {Checked = true, ValueDisplayed = "3"} 

     }; 
     checkedListBox1.DataSource = list; 
     checkedListBox1.DisplayMember = "ValueDisplayed"; 
     for (int i = 0; i < checkedListBox1.Items.Count; ++i) 
     { 
      checkedListBox1.SetItemChecked(i, ((RandomClass)checkedListBox1.Items[i]).Checked); 
     } 
     checkedListBox1.ItemCheck += (sender, e) => { 
      list[e.Index].Checked = (e.NewValue != CheckState.Unchecked); 
     }; 


     public class RandomClass 
     { 
      public string ValueDisplayed { get; set; } 
      public bool Checked { get; set; } 
     } 
関連する問題