проблема с содержимым, отображаемым в виде списка - PullRequest
0 голосов
/ 28 октября 2009

Добавление содержимого в просмотр списка - это простая процедура, подобная

   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 голосов
/ 28 октября 2009

Ну, это проверка количества SubItems. Если есть только 1 подпункт, он добавит 2 новых подпункта со строками PolicyEnabled/PolicyCurrent. В противном случае предполагается, что существует больше 1 подэлемента, и просто устанавливаем текст (значение) подэлементов в новые значения. Я думаю, что на самом деле это должно быть if(SubItems.Count > 1). Поэтому я думаю, что в основном при первом запуске он не найдет подпунктов, создаст 2 новых подпункта. Затем при каждом последующем вызове он просто обновляет существующие подпункты, а не добавляет больше

На самом деле, я думаю, что проверка SubItem.Count должна быть> 0, так как изначально не будет никаких подэлементов. Если этот код действительно работает, я предполагаю, что подэлементы создаются до того, как эта функция когда-либо будет вызвана, и, следовательно, почему она никогда не ломается. В целом, похоже, что это сломается довольно легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...