C# - 如何将变量放入第二列ListView

时间:2016-01-31 12:34:15

标签: c# listview button count

我有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();
    }
    }

enter image description here

3 个答案:

答案 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);

你重复第二行的次数与列表视图中的列重复次数