كيف يمكنني العمل مع خاصية العلامة الخاصة بعنصر قائمة WinForms؟

StackOverflow https://stackoverflow.com/questions/2870993

سؤال

كيف يمكنني كتابة رمز C# winforms مثل هذا؟

لا تحتوي عناصر CheckedListbox على خصائص "علامة" و "Valuemmed".

أعلم أن هناك العديد من البدائل لهذا. لكني بحاجة إلى العمل بهذه الطريقة.

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";
}
هل كانت مفيدة؟

المحلول

لا توجد خاصية 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top