我知道如何添加/删除项目,但我不知道如何将更多项目添加到同一个字段(同一行和同一列)。我想每当我点击一个按钮时,一个项目被添加到相同的选定行但不会添加到listView中的新行。 我上传了一张你可以查看的照片,看看我究竟是什么意思。
答案 0 :(得分:1)
考虑查看ObjectListView或DataGridView而不是您当前的内容。它可能会更灵活地满足您的需求。
你的问题有点不清楚。显然,您正在使用listView,并且您有列和行,从而产生单元格/框/网格位置。我认为,在最初创建之后,您希望在该位置附加或更改数据。
要明白:给定'单元格内的多行文字'不支持(我最好能说)。您显示的图片可能是自定义对象或类似于listView的图片,但不同(例如ObjectListView)。或者也许是一张照片。
listView2.Items[0].SubItems[4].Text = "123\nabc"; //Doesn't add a proper newline like a normal string
listView2.Items[0].SubItems[4].Text = "123\rabc"; //Doesn't add a proper return carriage like a normal string
listView2.Items[0].SubItems[4].Text = "123\r\nabc"; //Doesn't add a proper newline like a normal string
我假设您正在使用详细信息视图
listView1.View = View.Details;
首先添加标题,listView1.Columns.Add(text,width);
listView1.Columns.Add(First Name", 50);
listView1.Columns.Add("Middle Name", 100);
listView1.Columns.Add("Last Name", 100);
然后将数据添加到listView。但是,这不是直接完成的。您构建一个listViewITEM,然后将该项添加到列表视图。
string[] row = new string[3];
row[0] = "john";
row[1] = "someone";
row[2] = "doe";
ListViewItem lvi = new ListViewItem(row);
listView1.Items.Add(item);
listView1.SelectedItems [#] .SubItems [#]。Text =" string" +" \ n" +" string2&#34 ;;
CrazyPaste建议添加一行,这可能很实用,而且你经常会看到listViews。 但是,如果您选择添加或"重做"在输入新信息之前,请务必删除所有旧信息,以避免重复。 摘自visual studio 2013 pro中的弹出窗口
listView1.Items.RemoveAt(int index)
listView1.Items.Insert(int index, string key, string text, int imageIndex)
OR
listView1.Items.Clear(); //Clears all items
然后
//Add populate logic here
如果您希望以这种方式填充列表视图,则循环中的两个数组或多维数组将是有效的。
要以编程方式实现此目的,您可以......
listView2 = new ListView();
listView2.View = View.Details;
listView2.Location = new Point(50, 50);
listView2.Size = new Size(400, 100);
this.Controls.Add(listView2);
listView2.Columns.Add("AAA");
listView2.Columns.Add("BBB");
listView2.Columns.Add("CCC");
listView2.Columns.Add("DDD");
listView2.Columns.Add("EEE");
ListViewItem item1 = new ListViewItem();
item1.Text = "0"; //The way to properly set the first piece of a data in a row is with .Text
item1.SubItems.Add("1"); //all other row items are then done with .SubItems
item1.SubItems.Add("2");
item1.SubItems.Add("3");
item1.SubItems.Add("");
item1.SubItems.Add("");
ListViewItem item2 = new ListViewItem();
item2.Text = "00";
item2.SubItems.Add("11");
item2.SubItems.Add("22");
item2.SubItems.Add("33");
item2.SubItems.Add("");
item2.SubItems.Add("");
ListViewItem item3 = new ListViewItem();
item3.Text = "000";
item3.SubItems.Add("111");
item3.SubItems.Add("222");
item3.SubItems.Add("333");
item3.SubItems.Add("");
item3.SubItems.Add("");
//item1.SubItems.Clear();
//item1.SubItems.RemoveAt(1);
listView2.Items.Add(item1);
listView2.Items.Add(item2);
listView2.Items.Add(item3);
//listView2.Items.Insert(2, item1); //0 here is the row. Increasing the number, changes which row you are writing data across
listView2.Items[0].SubItems[4].Text = "123\rabc";
要更新'信息:
listView1.Items.Clear();
listView1.Items.Add(item1);
listView1.Items.Add(item2);
...等
注意:
答案 1 :(得分:0)
我没有太多可继续的事情。但这增加了一个新行:
string[] row = { "1", "snack", "2.50" };
var listViewItem = new ListViewItem(row);
listView1.Items.Add(listViewItem);
这里有一篇讨论如何更新现有listitem的帖子: C#: How do you edit items and subitems in a listview?
答案 2 :(得分:0)
确定。在我搜索互联网多年后,事实证明listView不支持文本换行。所以我使用了DataGridView。谢谢你的帮助