如何使用 winforms 选中的列表框项的 Tag 属性?

use*_*312 1 tags checkedlistbox winforms valuemember

如何编写这样的 C# winforms 代码?

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";
}
Run Code Online (Sandbox Code Playgroud)

mas*_*2k1 5

没有 Tag 属性,但 CheckedListBox 接受任何对象(您不必只将字符串放入其中)。您可以创建自定义类来保存数据:

public class CheckListBoxItem
{
    public Permission Tag;
    public string Text;
    public override string ToString() { return Text; }
}
Run Code Online (Sandbox Code Playgroud)

然后将此对象添加为项目

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

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