我有2个表单,form1和form2。 form1有2个按钮,btnVanilla和btnConfirm。 form2有一个listView,listView1。
在form1上单击vanilla时,它应该在Vanilla旁边的Quantity列中显示“1”。 但此刻它在香草下面显示“1”。如何将其移到下一列?
有一个屏幕截图显示我的意思。
Form1中
public partial class form1 : Form
{
private string vanilla = "Vanilla";
private List<string> _values = new List<string>();
public form1()
{
InitializeComponent();
}
int vanillaCount = 0
public void btnVanilla_Click(object sender, EventArgs e)
{
if (!_values.Contains(vanilla))
{
_values.Add(vanilla);
}
vanillaCount++;
}
private void btnConfirm_Click(object sender, EventArgs e)
{
form2 frm2 = new form2(_values, vanillaCount);
frm2.Show();
this.Hide();
}
}
form2
public partial class form2 : Form
{
private List<string> _values;
public form2(List<string> _values)
{
this._values = _values;
}
public form2(List<string> passedValues, int vanillaCount)
{
InitializeComponent();
foreach (var item in passedValues)
{
listView1.Items.Add(item);
}
listView1.Items[0].SubItems[1].Text = vanillaCount.ToString();
}
}
答案 0 :(得分:2)
你确定这一行
listView1.Items[0].SubItems[1].Text = vanillaCount.ToString();
是对的吗?你不是在任何地方创建子项,它应该像
listView1.Items[0].SubItems.Add(vanillaCount.ToString());
答案 1 :(得分:1)
解决实际问题的一种解决方案:
public Form2(List<string> passedValues, int vanillaCount)
{
InitializeComponent();
// This line let you show more Columns
listView1.View = View.Details;
// Define your needed Columns
listView1.Columns.Add("Item-Name", -2); //(the width with -2 means, that the column will be autosized)
listView1.Columns.Add("Quantity");
foreach (var item in passedValues)
{
// Create a new ListViewItem "Vanilla", add your needed Subitems like Quantity, Price, ...
var newItem = new ListViewItem(item);
newItem.SubItems.Add(vanillaCount.ToString());
// add the new Item to your ListView
listView1.Items.Add(newItem);
}
}
但是您应该创建一个具有自己的对象类型的列表,如
public class Product
{
public string Name { get; set; }
public int Quantity { get; set; }
}
答案 2 :(得分:0)
对于您的问题使用如下:
ListViewItem row = new ListViewItem();
row.SubItems.Add(value.ToString());
listview1.Items.Add(row);
你重复第二行的次数与列表视图中的列重复次数