Come posso lavorare con la proprietà Tag di un WinForms controllato oggetto listbox?
-
03-10-2019 - |
Domanda
Come faccio a scrivere un codice C # WinForms come questo?
elementi??CheckedListBox non hanno 'Tag' e le proprietà 'ValueMember'.
So che ci sono molte alternative a questo. Ma ho bisogno di lavorare in questo modo.
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";
}
Soluzione
Non v'è alcuna proprietà Tag, ma il CheckedListBox accetta qualsiasi oggetto (non c'è bisogno di mettere solo le stringhe in esso). È possibile creare la classe personalizzata per contenere i dati:
public class CheckListBoxItem
{
public Permission Tag;
public string Text;
public override string ToString() { return Text; }
}
e quindi aggiungere questo oggetto come elemento
foreach (Permission p in selectedRole.PermissionItems)
{
checkedListBox1.Items.Add(new CheckListBoxItem()
{
Tag = p,
Text = p.PermissionKey
});
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow