0

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

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

1 回答 1

1

仅当您在 ListView 中定义了 Columns 并且您将 ListView 的 View 设置为 View.Details 时,ListView 的 SubItems 才有效

// 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

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

更新:
由于在Form 2中添加ListViewItems,为了能够更新Form 1的listView1,您需要在Form 2中创建和事件(添加ListViewItems)并在Form 1(事件处理程序)中处理此事件。检查此StackOverflow 问题以获取更多详细信息。

于 2012-08-13T16:36:28.713 回答