如何在ListView中插入对象类型?

2024-03-10

我想在 ListView 中维护 ID 和对象类型。我正在尝试这样做:

lstView.Items.Insert(MyObject);
// can't do this, because it takes only Int and String

就我而言,ID 是 int,所以这部分没问题。但是如何插入对象类型并在 Item_Selection 更改事件中检索它呢?


A ListView不能像直接添加或插入对象ListBox or ComboBox,但您需要创建一个ListViewItem并设置其Tag财产。

来自 MSDN 的 Tag 属性

包含有关控件的数据的对象。默认值为空。

任何从 Object 类派生的类型都可以分配给该类型 财产。如果通过 Windows 窗体设置 Tag 属性 设计师,只能分配文本。标签的常见用途 属性是存储与控件密切相关的数据。 例如,如果您有一个显示有关 客户,您可以存储包含客户订单的数据集 该控件的 Tag 属性中的历史记录,以便可以访问数据 迅速地。

示例代码:

MyObject myObj = new MyObject();

ListViewItem item = new ListViewItem();
item.Text = myObj.ToString(); // Or whatever display text you need
item.Tag = myObj;

// Setup other things like SubItems, Font, ...

listView.Items.Add(item);

当你需要从ListView,您可以投射Tag财产。

private void OnListViewItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) {
    MyObject myObj = (MyObject)e.Item.Tag;
    int id = myObj.Id;

    // Can access other MyObject Members
}

通常将功能包装到辅助方法中更容易。

public static void CreateListViewItem(ListView listView, MyObject obj) {
    ListViewItem item = new ListViewItem();
    item.Tag = obj;

    // Other requirements as needed

    listView.Items.Add(item);
}

你可以这样做:

CreateListViewItem(listView, obj);

A ListView不支持DataSource属性就像很多控件一样,所以如果您希望数据绑定,您将需要实现一些更自定义的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在ListView中插入对象类型? 的相关文章

随机推荐