2010-05-20 11 views
1

Comment puis-je écrire un code C winforms comme celui-ci?Comment puis-je utiliser la propriété Tag d'un élément de liste déroulante winsforms checked?

Les éléments CheckedListBox ne possèdent pas les propriétés 'Tag' et 'ValueMember'.

Je sais qu'il existe de nombreuses alternatives à cela. Mais j'ai besoin de travailler de cette façon.

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

Pourquoi les nombreuses solutions de rechange impossible? Quelles sont vos contraintes exactes ici? – Ishmaeel

+1

Je ne comprends pas pourquoi le contrôle checkedlistbox est développé en utilisant une idée différente de celle du contrôle ComboBox et ListBox. – anonymous

Répondre

4

Il n'y a pas de propriété Tag, mais le CheckedListBox accepte un objet (vous n'avez pas juste mettre des chaînes dedans). Vous pouvez créer votre classe personnalisée pour stocker vos données:

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

, puis ajoutez cet objet comme élément

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

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