如何在ListView中插入对象类型?
我想在ListView中维护ID和Object Type。 我正在尝试这样做:
lstView.Items.Insert(MyObject); // can't do this, because it takes only Int and String
在我的情况下,ID是int,所以该部分是好的。 但是如何在Item_Selection更改事件中插入对象类型并检索它?
ListView
不能像ListBox
或ComboBox
那样直接添加或插入对象,而是需要创建ListViewItem
并设置其Tag
属性。
来自Msdn的Tag属性
包含有关控件的数据的Object。 默认值为null。
可以将从Object类派生的任何类型分配给此属性。 如果通过Windows窗体设计器设置Tag属性,则只能分配文本。 Tag属性的常见用途是存储与控件密切相关的数据。 例如,如果您有一个显示客户信息的控件,则可以在该控件的Tag属性中存储包含客户订单历史记录的DataSet,以便快速访问数据。
示例代码:
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 }
通常,它更容易将function包装到辅助方法中。
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);
ListView
不像许多控件那样支持DataSource
属性,所以如果你想要数据绑定,你需要实现更多自定义的东西。
创建新的listviewitem对象。 使用Tag属性。
最快的方法是在旁边保留一个对象列表:
List list = ... ; // my list
使用字符串作为ID从列表生成字典,或者您可以使用索引从原始列表中检索:
Dictionary listBinder = new Dictionary( list.Select(i => new KeyValuePair(i.ID, i.Name)) );
绑定或代码隐藏将列表视图附加到字典,然后使用所选项目从私有列表中检索您的对象。
上述就是C#学习教程:如何在ListView中插入对象类型?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/989919.html