-1

ListBox コントロールにさまざまな人物を格納できるアプリケーションを構築しようとしています。

私の ListBox コントロールはForm1にあり、このメソッドも問題を引き起こしています。

  public void addPersonToList(Person person) {
            string newPerson = person.firstName + " " + person.lastName + " " + person.age;

            personList.Items.Add(newPerson);

 }

別のフォームでは、次のように addPersonsToList メソッドを呼び出します。

Form1 form1 = new Form1();
  form1.addPersonToList(person);

ここで、(デバッグ中に) addPersonToList の文字列newPersonが実際に正しい文字列を格納していることを確認しました。問題は、文字列が ListBox (personList という名前) に表示されないことです。

助言がありますか?

4

2 に答える 2

3

を使用してnew、アイテムの新しいインスタンスを作成しています。

Form1 form1 = new Form1();
form1.addPersonToList(person);

したがって、このコードは Form1 の新しいインスタンスを作成し、そのインスタンスに項目を追加しますが、これはおそらく表示されているものではありません。それを参照できるように、表示されているインスタンスへの参照が何らかの形で必要です。

于 2012-11-06T22:59:19.320 に答える
0

既存の開いているフォームを参照するには、次の操作を行います。

foreach (Form frm in Application.OpenForms)
{
     if (frm.GetType() == typeof(Form1))
     {
          Form1 frmTemp = (Form1)frm;
          frmTemp.addPersonToList(person);
          fromTemp.Dispose();
     }
}

同様に MDI フォームの場合:

foreach (Form frm in MdiParent.MdiChildren)
{
}
于 2012-11-06T23:13:31.790 に答える