-1

わかりましたので、web ブラウザー (form1) にブックマークというボタンがあります。Form3のリストボックスにURLを追加したい。試してみると、何か問題があるためエラーが発生します。

このエラー:

ここに画像の説明を入力

しかし、コードを次のように変更しました。

Form3.AC.listBox1.Items.Add(getCurrentBrowser().Url.ToString()); 

それでもエラー

完全なコード:

private void button6_Click(object sender, EventArgs e)
{
    Form3.AC.listBox1.Items.Add(getCurrentBrowser().Url.ToString());
}
4

1 に答える 1

2

Form3 のインスタンスを渡しますが、そのインスタンスを使用していない場合は、コードを次のように変更して試してください。

private void button6_Click(object sender, EventArgs e)
{
    _form.AC.listBox1.Items.Add(getCurrentBrowser().Url.ToString());
}

アップデート:

AddFavourites クラス/フォームをインスタンス化するときは、Form3 のインスタンスをコンストラクターに渡します。

var frmAddFavs = new AddFavorites(new Form3());
frmAddFavs.Show();

または、AddFavorites フォームが Form3 によって起動/インスタンス化された場合:

var frmAddFavs = new AddFavorites(this);
frmAddFavs.Show();

AddFavorites のコンストラクターで、Form3 インスタンスのコピーを保存します。

public AddFavorite(Form3 form)
{
InitializeComponent();
this._form = form; //<- here we store the Form3 instance
}

ボタンをクリックすると呼び出しますがForm3.AC.Listbox...、そのコンテキストの Form3 はインスタンス化されていません。

私の答えは_form、Form3 のインスタンスであるプライベート メンバー変数を使用することです。

更新 2:

私はそれを理解していません。_form のエラーが表示されます

Form3 のインスタンスを AddFavorites のコンストラクターに渡すようにしてください。Form3 引数を渡さない場合は、デフォルトのコンストラクターが呼び出されます (コードに表示されていなくても)。ヒント: クラス コンストラクターをオーバーロードし、パラメーターなしのコンストラクターを削除しても、パラメーターなしのコンストラクターは実際には引き続き使用できます。

だからこれをしないでください:

  var frmAddFavs = new AddFavorites();
  frmAddFavs.Show();

これはこれと同じです:

  var frmAddFavs = new AddFavorites(NULL);
  frmAddFavs.Show();
于 2013-03-26T02:42:16.720 に答える