Listview中显示的内容问题

时间:2009-10-28 09:10:14

标签: c# winforms listview

向listview添加内容是一个简单的过程,如

   ListViewItem item = new ListViewItem();
            listView1.Items.Add(item);
            item.Text = "fdfdfd";
            item.SubItems.Add("melp");
            item.SubItems.Add("asfd");

任何人都可以告诉我这里究竟发生了什么,虽然这里也添加并显示了内容,我从我的项目中获取的这段代码

protected override void OnUpdate()
     {
        string func = "ResourcePolicySystemsLVI.OnUpdate";
        try
        {
           if(Data != null)
           {
              Text = base.Data.Name;
              if(SubItems.Count == 1)
              {
                 SubItems.Add(((IResourcePolicy)Data).ResourcePolicyEnabled.ToString());  // ResourcePolicyEnabled and ResourcePolicyCurrent are attributes
                 SubItems.Add(((IResourcePolicy)Data).ResourcePolicyCurrent.ToString());
              }
              else
              {
                 SubItems[1].Text = ((IResourcePolicy)Data).ResourcePolicyEnabled.ToString();
                 SubItems[2].Text = ((IResourcePolicy)Data).ResourcePolicyCurrent.ToString();
              }
           }
           base.OnUpdate();
        }

     /// <summary>
     /// The IResourcePolicy interface of the ManagedDevice associated with this ListViewItem.
     /// </summary>
     public new IResourcePolicy Data
     {
        get
        {
           return (IResourcePolicy)base.Data;
        }
     }

1 个答案:

答案 0 :(得分:0)

好吧,它正在检查SubItems计数。如果只有1个子项,则会添加2个带有PolicyEnabled/PolicyCurrent字符串的新子项。否则,假设存在大于1个SubItem并且仅将SubItems的Text(值)设置为新值。我认为它应该是if(SubItems.Count > 1)。所以我认为基本上第一次运行它会发现没有子项,创建2个新子项。然后在每个后续调用中,它将简单地更新现有子项而不是添加更多

实际上,我认为SubItem.Count检查应该是&gt; 0,因为最初将没有SubItems。如果该代码实际上正在工作,我假设在调用该函数之前正在创建SubItems,因此它永远不会中断。总的来说,它看起来很容易打破。