2010-05-20 67 views
1

如何編寫這樣的C#winforms代碼?如何使用WinForms checked checked列表項的Tag屬性?

CheckedListBox項目沒有'Tag'和'ValueMember'屬性。

我知道有很多這個選擇。但我需要這樣工作。

private void LoadPermissionsToCheckedListBox() 
{ 
    Role selectedRole = (Role)comboBox1.SelectedItem; 

    int i = 0; 
    foreach (Permission p in selectedRole.PermissionItems) 
    { 
     checkedListBox1.Items.Add(p); 
     checkedListBox1.Items[i].Tag = p; 
    } 

    checkedListBox1.DisplayMember = "PermissionKey"; 
    checkedListBox1.ValueMember = "PermissionID"; 
} 
+1

爲什麼許多替代方案不可行?你在這裏有什麼確切的限制? – Ishmaeel 2010-06-17 14:02:16

+1

我只是不明白爲什麼checkedlistbox控件是使用與ComboBox和ListBox控件不同的想法開發的。 – anonymous 2010-06-17 14:41:12

回答

4

沒有Tag屬性,但CheckedListBox接受任何對象(您不必只放入字符串)。您可以創建自定義的類來保存你的數據:

public class CheckListBoxItem 
{ 
    public Permission Tag; 
    public string Text; 
    public override string ToString() { return Text; } 
} 

,然後添加這個對象爲項目

foreach (Permission p in selectedRole.PermissionItems) 
{ 
    checkedListBox1.Items.Add(new CheckListBoxItem() 
    { 
     Tag = p, 
     Text = p.PermissionKey 
    }); 
} 

檢查: http://social.msdn.microsoft.com/Forums/en-us/csharpgeneral/thread/80f29165-acb3-421f-b5bb-856ba99da703

相關問題