无法将项目添加到我的ListView

时间:2012-08-13 16:24:56

标签: c# .net winforms listview

我在C#程序中有一个三列ListView(列是使用Visual Studio设计器定义的),我试图用另一个表单填充数据,我试图使用这个位于同一个类中的函数作为ListView(Input类),但是从另一种形式的按钮(HandleData类)的click事件调用。

public void agregarALista(string label, string longitud,string cantidad)
{
   ListViewItem i = new ListViewItem(label);
   i.SubItems.Add(longitud);
   i.SubItems.Add(cantidad);
   listView1.Items.Add(i);
}

调试时我可以看到它执行那些行,所以调用没问题,但没有数据添加到我的listView1。

您认为这可能是什么?

这是另一种形式的调用函数,位于HandleData类中:

 private void button1_Click(object sender, EventArgs e)
 {
   Input agregarView = new Input();
   double dOutput = 0;
   if (Double.TryParse(textBox2.Text,out dOutput))
   {
      agregar.agregarLista(textBox1.Text, textBox2.Text, textBox3.Text);

      agregarView.agregarALista(textBox1.Text, textBox2.Text, textBox3.Text);
      if (MessageBox.Show("Continuar agregando?","Otra orden", MessageBoxButtons.YesNo) == DialogResult.Yes)
      {
        textBox1.Clear();
        textBox2.Clear();
        textBox3.Clear();
      }
      else
      {
         this.Dispose();
         this.Close();
      }
   }
   else
   {
     MessageBox.Show("No es una Longitud Valida");
     textBox2.Clear();
   }            
  }

1 个答案:

答案 0 :(得分:1)

只有在ListView中定义了列并且ListView的View设置为View.Details

时,ListView的SubItem才有效。
// Set to details view.
listView1.View = View.Details;
// Add a column with width 20 and left alignment.
listView1.Columns.Add("longitud", 20, HorizontalAlignment.Left);
listView1.Columns.Add("candidat", 20, HorizontalAlignment.Left);
//... and so on

查看此link以获取有关如何以编程方式添加列并使用子项填充的完整图片(它还使用ListView.BeginUpdate()和ListView.EndUpdate()方法,这些方法可防止每次添加项目时重新绘制列表视图在多个添加项目操作中。)

<强>更新
为了能够在表单2中添加ListViewItems来更新表单1的listView1,您需要在表单2中创建和事件(添加ListViewItems)并在表单1(eventhandler)中处理此事件。 有关详细信息,请查看此StackOverflow question