1

あるフォームから別のフォームに文字列を渡す際に問題があるようです。Form1 に 2 つの listBoxes がありますが、Form2 を使用して Form1 の listBoxes に情報を渡したいと考えています。Form2には、パラメータ文字列aと文字列bを使用してForm1の関数を呼び出すbutton_Click関数があります。

private void button_Click(object sender, EventArgs e){
Form1 frm = new Form1();
frm.AddItemToListBox(txtBox1.Text,txtBox2.Text);
}

以下は、Form1 で関数 AddItemToListBox を呼び出すコードです。
上記は Form1 の AddItemToListBox 関数です。

AddItemToListBox(string a, string b){
listBox1.Items.Add(a);
listBox2.Items.Add(b);
}

ただし、これは文字列をリストボックスに追加しません。エラーメッセージなどはありません。また、2 つのパブリック文字列 STR1 と STR2 を宣言しようとしました

AddItemToListBox(string a, string b){
listBox1.Items.Add(a);
listBox2.Items.Add(b);
STR1 = a;
STR2 = b;
}

しかし、STR1とSTR2の値を表示するボタンを使用した場合。それらは ""、String.Empty になります。値を表示する MessageBox には何も表示されません。ただし、MessageBox.Show(a); を配置すると、および MessageBox.Show(b); AddItemToListBox 関数では、文字列は正しく表示されますが、リストボックスには追加されません。

これは2時間ほど私を苛立たせていました。可能であれば、そのメソッドを実際に使用してアイテムをリストボックスに追加する理由と方法を知りたいです。よろしくお願いします。

4

3 に答える 3

3

このメソッドの最後に frm.Show() を追加してみてください。

private void button_Click(object sender, EventArgs e)
{ 
    Form1 frm = new Form1(); 
    frm.AddItemToListBox(txtBox1.Text,txtBox2.Text); 
    frm.Show();
} 

しかし、これで問題が解決しないことは確かです。正しい Form1 を参照する必要があることを示してください。Form1 の新しいインスタンスを作成していると思います。正しいインスタンスに対処する必要があります

于 2012-07-02T10:43:04.727 に答える
1
Form1 frm = new Form1();

上記は新しいフォームを初期化しますが、Form1 の既存のインスタンスは変更されません。

于 2012-07-02T10:43:58.940 に答える
0

入力が空であるため、呼び出す前に txtBox1.Text を debugwatch します

frm.AddItemToListBox(txtBox1.Text,txtBox2.Text);

または、文字列を追加した後にフォームが再描画されません。これは、次を使用して強制できます。

listBox1.Invalidate();
listBox2.Invalidate();

文字列を追加した直後

于 2012-07-02T10:53:47.723 に答える