2010-12-04 78 views
4

我有一個集合,名爲字符串的屬性爲Subject,而SubjectCode爲int。我將它傳遞給一個檢查列表框。在按下按鈕時,我想獲取用戶檢查的所有項目的集合,將其轉換爲集合主題。CheckedListBox檢查項目對象轉換?

PLZ有人可以幫助....

日Thnx提前...

+2

代碼勝於雄辯... – Oded 2010-12-04 15:16:46

回答

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... 
    } 
} 
+0

感謝漢斯,像往常一樣,已經提供了簡潔和詳細說明(我已經錯過了「的ToString」) – Crisfole 2010-12-28 21:51:39

0

這個怎麼樣?

Subject[] myObjects; 

void onButtonPressed(object sender, EventArgs e) 
{ 
     foreach (int i in this.checkedItems.CheckedIndecies) 
     { 
      Subject obj = myObjects[i]; 
     } 
} 

您可以直接訪問的對象,但其中的風險ListBox中的對象類型的題目沒有的情況下,和它給你未來更多的擴展性。

相關問題