【问题标题】:C# - How to put variables into second column ListViewC# - 如何将变量放入第二列 ListView
【发布时间】:2016-01-31 12:34:14
【问题描述】:

我有 2 个表格,表格 1 和表格 2。 form1 有 2 个按钮,btnVanilla 和 btnConfirm。 form2有一个listView,listView1。

在 form1 上单击一次 vanilla 时,它应在 Vanilla 旁边的 Quantity 列中显示“1”。 但目前它在香草下方显示“1”。如何将其移至下一列?

有一个截图可以说明我的意思。

表格1

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();

    }

}

表格2

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

【问题讨论】:

    标签: c# listview button count


    【解决方案1】:

    你确定这条线

     listView1.Items[0].SubItems[1].Text = vanillaCount.ToString();
    

    正确吗?您不是在任何地方创建子项,它应该是这样的

    listView1.Items[0].SubItems.Add(vanillaCount.ToString());
    

    【讨论】:

      【解决方案2】:

      为您的实际问题提供一种解决方案:

      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; }
          }
      

      【讨论】:

        【解决方案3】:

        对于您的问题,请像这样使用:

        ListViewItem row = new ListViewItem(); 
        row.SubItems.Add(value.ToString()); 
        listview1.Items.Add(row);
        

        您重复第二行的次数与列表视图中的列数一样多

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-31
          • 2018-12-29
          • 1970-01-01
          • 1970-01-01
          • 2019-10-20
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          相关资源
          最近更新 更多