簡體   English   中英

將CheckedListBox選定的項目檢索到Dictionary Winforms C#

[英]Retrieve CheckedListBox selected items to Dictionary Winforms c#

我有一本包含一些數據的字典:

        _myDictionary = new Dictionary<string, bool>
        {
            { "a",true},
            { "b",false},
            { "c",true},
            { "d",false},
        };

我想用此數據填充一個CheckedListBox,所以我執行以下操作:

        foreach (string key in _myDictionary.Keys)
        {
            myCheckedListBox.Items.Add(key, _myDictionary[key]);
        }

直到一切正常為止。 現在,我需要使用CheckedListBox中的選定項來更新字典(從對中更新bool)。

我試圖做一個foreach來分配字典中的所有對,但是CheckedListBox.Items需要一個索引。

也許字典不是存儲此數據的最佳結構。

螞蟻的想法?

我通過執行以下操作解決了我的問題:

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

您可以執行以下操作來綁定您的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; }
        }

暫無
暫無

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

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