我可以访问ListViewItem的属性吗?标签,而不仅仅是"ToString"方法

本文关键字:quot 不仅仅是 方法 ToString 标签 ListViewItem 访问 属性 我可以 | 更新日期: 2023-09-27 18:10:09

耐心点,我不知道该怎么问这个问题。

  1. 我在Windows窗体上有一个listView控件,我向它添加了一个特定目录下文本文件的名称。
  2. 这些文件中的每一个都作为对象"ResultFile"加载,并根据文本分配许多属性-"字符串类型","int numberolines","bool IsGeneric"等。
  3. 用户可以自由选择/取消选择,但我想根据他们已经选择的文本文件类型做出决定。作为一个粗略的想法,如果他们已经选择了一个"Type=="x1",我不希望他们能够选择另一个。如果他们选择了2个或更多的IsGeneric==true,我想给他们一个警告…

我开始用这个

扩展ListViewItem
public class MyListViewItem : ListViewItem
{
    public string Type { get; set; }
    public int NumberOfLines { get; set; }
    public bool IsGeneric { get; set; }
    public MyListViewItem(string s)
        : base(s)
    { }
}

我对此很高兴,因为这是我第一次扩展控件(是的,我是新手)…这允许我添加我自己的"ListViewItems"类型,我可以访问属性来做决定,但是我发现了"tag"属性,并认为我可以将我的对象绑定到它并直接访问它们。我看了看MSDN,它说我可以附加"ANY"对象,但我不知道如何使用它。

我似乎不能做任何事情,除了访问默认的对象方法。

     myListView.Item[1].Tag.ToString();

似乎是我最多能做的…

我错过了一些关于ListViewItem。标签属性? ?

我可以访问ListViewItem的属性吗?标签,而不仅仅是"ToString"方法

Tag属性接受object类型的任何对象,因此从object继承的任何类都可以存储在其中。如果你有一个这样的对象:

public class MyItem
{
    public string Type { get; set; }
    public int NumberOfLines { get; set; }
    public bool IsGeneric { get; set; }
}

您可以将您的对象分配给标签字段,如下所示:

var myobj = new MyItem();
myobj.Type = "Type 1";
myListView.Items[1].Tag = myobj;

并像这样检索对象:

var myobj = (MyItem)myListView.Items[1].Tag;
var type = myobj.Type;

只有转换为MyItem后才能访问自定义属性。否则,您将只能获得object属性和方法,其中之一是.ToString()

相关文章: