Как я добавляю к определенному столбцу в объекте Listview?

Принятый ответ является лучшим, но так как существует больше чем один способ сделать это, вот другое решение:

if [ "$string" != "${string/foo/}" ]; then
    echo "It's there!"
fi

${var/search/replace} $var с первой инстанцией search заменены replace, если это найдено (это не изменяется $var). При попытке заменить foo ничем, и строка изменилась, то, очевидно foo был найден.

5
задан user1539296 7 August 2012 в 19:35
поделиться

4 ответа

ListViewItems не осведомлены о ваших столбцах ListView.

Чтобы напрямую ссылаться на столбец, вам сначала нужно добавить все столбцы в ListViewItem.

Итак ... скажем, ваш ListView имеет три столбца A, B и C; Следующий фрагмент кода добавит данные только в столбец A:

ListViewItem item = new ListViewItem();
item.text = "Column A";

m_listView.Items.Add(item);

Чтобы заставить его добавить текст и в столбец C, нам сначала нужно сообщить ему, что у него есть столбец B ...

ListViewItem item = new ListViewItem();
item.text = "Column A";
item.SubItems.Add("");
item.SubItems.Add("Column C");

m_listView.Items.Add(item);

Итак, теперь мы есть столбцы A, B и C в ListViewItem, и текст появляется в столбцах A и C, но не в B.

Наконец ... теперь, когда мы СКАЗАЛИ, что у него три столбца, мы можем делать все, что захотим к этим конкретным столбцам ...

ListViewItem item = new ListViewItem();
item.text = "Column A";
item.SubItems.Add("");
item.SubItems.Add("Column C");

m_listView.Items.Add(item);

m_listView.Items[0].SubItems[2].Text  = "change text of column C";
m_listView.Items[0].SubItems[1].Text  = "change text of column B";
m_listView.Items[0].SubItems[0].Text  = "change text of column A";

надеюсь, что это поможет!

18
ответ дан 18 December 2019 в 06:12
поделиться

Обычно я наследую ListViewItem как:

public class MyOwnListViewItem : ListViewItem 
{
    private UserData userData;

    public MyOwnListViewItem(UserData userData) 
    {
        this.userData = userData;
        Update();
    }

    public void Update() 
    { 
       this.SubItems.Clear(); 
       this.Text = userData.Name; //for first detailed column

       this.SubItems.Add(new ListViewSubItem(this, userData.Surname)); //for second can be more
    }
}

где

public class UserData 
{
   public string Name;
   public string Surname;
}

с помощью

listView1.Items.Add(new MyOwnListViewItem(new UserData(){Name="Name", Surname = "Surname"}));
6
ответ дан 18 December 2019 в 06:12
поделиться

Может быть, что-то вроде этого?

ListViewItem item = m_listview.Items.Add("1850");
item.Subitems.Add(string.Empty); //Make an add method that does this for every column you got and then you can use the indexer below.
item.Subitems[1].Text = "Test";

Индекс 0 является основным элементом. Индекс 1> - это подпункты.

-1
ответ дан 18 December 2019 в 06:12
поделиться
ListViewItem item = new ListViewItem("foo");
item.SubItems.Add("foo2");
this.listView1.Items.Add(item);

ListView не поддерживает привязку данных и строго типизированное именование. Я бы рекомендовал вместо этого рассмотреть возможность использования DataGridView. В зависимости от того, что вам нужно, это может сэкономить вам несколько очков здравомыслия.

У Черникова это хорошо реализовано, чтобы сделать вещи немного разумнее.

2
ответ дан 18 December 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: