CheckedListBox 选中项到对象转换?

Sub*_*sal 5 c# winforms

我有一个名为Subjects 的集合,其属性为字符串中的Name 和int 中的SubjectCode。我将它传递到一个选中的列表框。按一下按钮,我想获取用户检查的所有项目的集合,将其转换为集合主题。

请任何人都可以帮忙......

提前谢谢...

Han*_*ant 5

CheckedListBox 可以存储任何类型的类对象。您只需要覆盖 ToString() 即可显示对象的描述。例如:

    class Subject {
        public string Name { get; set; }
        public int Code { get; set; }
        public override string ToString() { return Name; }
    }
Run Code Online (Sandbox Code Playgroud)

您可以将它们添加到 Items 集合中。读回选定的对象只需将对象投射回主题即可。例如:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        checkedListBox1.Items.Add(new Subject { Name = "Hans", Code = 42 });
        checkedListBox1.Items.Add(new Subject { Name = "User", Code = 486196 });
    }

    private void button1_Click(object sender, EventArgs e) {
        var selected = new List<Subject>();
        foreach (int index in checkedListBox1.SelectedIndices) {
            selected.Add((Subject)checkedListBox1.Items[index]);
        }
        // etc...
    }
}
Run Code Online (Sandbox Code Playgroud)