我有一个名为Subjects的集合,其中属性为String中的Name,而SubjectCode为int。我将它传递给一个选中的列表框。按下按钮,我想获取用户检查的所有项目的集合,将其转换为集合主题。
Plz任何人都可以提供帮助......
Thnx提前......
答案 0 :(得分:3)
CheckedListBox可以存储任何类的对象。您只需要一个显示对象描述的ToString()覆盖。例如:
class Subject {
public string Name { get; set; }
public int Code { get; set; }
public override string ToString() { return Name; }
}
您可以将这些添加到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...
}
}
答案 1 :(得分:0)
这个怎么样?
Subject[] myObjects;
void onButtonPressed(object sender, EventArgs e)
{
foreach (int i in this.checkedItems.CheckedIndecies)
{
Subject obj = myObjects[i];
}
}
您可以直接访问这些对象,但是您可能会遇到listBox中的对象不属于类型主题的情况,并且它将在未来为您提供更多可扩展性。