Csharp/C#教程:如何在ListView中插入对象类型?分享


如何在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不能像ListBoxComboBox那样直接添加或插入对象,而是需要创建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

(0)
上一篇 2021年12月24日
下一篇 2021年12月24日

精彩推荐