我有一個集合,名爲字符串的屬性爲Subject,而SubjectCode爲int。我將它傳遞給一個檢查列表框。在按下按鈕時,我想獲取用戶檢查的所有項目的集合,將其轉換爲集合主題。CheckedListBox檢查項目對象轉換?
PLZ有人可以幫助....
日Thnx提前...
我有一個集合,名爲字符串的屬性爲Subject,而SubjectCode爲int。我將它傳遞給一個檢查列表框。在按下按鈕時,我想獲取用戶檢查的所有項目的集合,將其轉換爲集合主題。CheckedListBox檢查項目對象轉換?
PLZ有人可以幫助....
日Thnx提前...
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...
}
}
感謝漢斯,像往常一樣,已經提供了簡潔和詳細說明(我已經錯過了「的ToString」) – Crisfole 2010-12-28 21:51:39
這個怎麼樣?
Subject[] myObjects;
void onButtonPressed(object sender, EventArgs e)
{
foreach (int i in this.checkedItems.CheckedIndecies)
{
Subject obj = myObjects[i];
}
}
您可以直接訪問的對象,但其中的風險ListBox中的對象類型的題目沒有的情況下,和它給你未來更多的擴展性。
代碼勝於雄辯... – Oded 2010-12-04 15:16:46