0

別のフォームからのデータを入力しようとしている C# プログラムに 3 列の 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 の SubItems は、ListView で列を定義し、ListView の View を View.Details に設定している場合にのみ機能します。

// 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() メソッドも使用します)。

更新:
フォーム 2 に ListViewItems を追加したためにフォーム 1 の listView1 を更新できるようにするには、フォーム 2 でイベントを作成し (ListViewItems の追加)、フォーム 1 (イベントハンドラー) でこのイベントを処理する必要があります。詳細については、このStackOverflow の質問を確認してください。

于 2012-08-13T16:36:28.713 に答える