0

WinForms2からリストビューの選択されたアイテムからWinForm1のリストボックスにアイテムを追加しようとしていますが、アイテムがリストボックスに追加されていません。

以下は私が使用しているコードです

WinForm1:

    public void setsrc( ListViewItem src )
    {
        Listbox1.Items.Add(src.Text);
    }

Winform2:

    WinForm1 fMain = new WinForm1();
    private void AddItemsButton_Click(object sender, EventArgs e)
    {

        foreach (ListViewItem src in listView1.CheckedItems)
        {
            fMain.setsrc(src);
        }
    }

form2でも以下のコードを試してみました

    WinForm1 fMain = new WinForm1();
    private void AddItemsButton_Click(object sender, EventArgs e)
    {

        foreach (ListViewItem src in listView1.CheckedItems)
        {
            fMain.Listbox1.Items.Add(src.Text); //The modifier is set to internal of Listbox1
        }
    }

ブレークポイントを適用して確認してみました。奇妙なことに、値は両方の条件で取得されますが、listbox1にリストされません。Form1のコントロールが更新されていないようなものがあります。

これについて私を助けてください。

4

1 に答える 1

1

WinForm問題は、Form2での新しいインスタンスを宣言していることです。もちろん、何も表示されません。WinForm1Form2オブジェクトを作成するときにへの参照を作成する必要があります。

これを行う1つの方法は、コンストラクターを使用することです。

class Form2
{
    private WinForm1 form;
    public Form2(WinForm1 form)
    {
       this.form = form;
    }
}

WinForm1次に、を作成するときのどこかでForm2

Form2 form = new Form2(this);
form.Show();

また、オブジェクトには意味のある名前を使用してください。

于 2012-10-04T20:41:30.937 に答える