如何添加Listview项目中的特定列?

Dar*_*ar1 5 .net c# user-interface listview winforms

我创建了一个列表视图,并在运行时确定列数.我一直在网上阅读有关listview的文本(我仍然是)但我想知道如何将项目添加到listview中的特定列我想到如下:

m_listview.Items.Add("1850").SubItems.Add("yes");
Run Code Online (Sandbox Code Playgroud)

假设"1850"是列的文本将是目标列.

Sk9*_*k93 18

ListViewItems不知道您的ListView列.

要直接引用该列,首先需要将所有列添加到ListViewItem.

所以...让我们说你的ListView有三列A,B和C; 下一段代码只会向A列添加数据:

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

m_listView.Items.Add(item);
Run Code Online (Sandbox Code Playgroud)

为了让它将文本添加到C列,我们首先要告诉它它有一个B列......

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

m_listView.Items.Add(item);
Run Code Online (Sandbox Code Playgroud)

所以现在我们在ListViewItem中有列A,B和C,文本出现在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";
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!

  • 很棒的答案!谢谢!来自Sk93的惊人报价,"我们都是noob once",非常鼓舞人心和激励!:) (2认同)

Che*_*kov 6

我通常将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
    }
}
Run Code Online (Sandbox Code Playgroud)

哪里

public class UserData 
{
   public string Name;
   public string Surname;
}
Run Code Online (Sandbox Code Playgroud)

运用

listView1.Items.Add(new MyOwnListViewItem(new UserData(){Name="Name", Surname = "Surname"}));
Run Code Online (Sandbox Code Playgroud)