-1

好的,所以我的网络浏览器(form1)中有一个名为书签的按钮。我希望它将 url 添加到 Form3 中的列表框中。当我尝试时,我得到一个错误的错误。

这个错误:

在此处输入图像描述

但是我将代码更改为:

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 尚未实例化。

我的回答是使用作为_formForm3 实例的私有成员变量。

更新 2:

我不明白。我收到 _form 的错误

确保将 Form3 的实例传递给 AddFavorites 的构造函数。如果您不传入 Form3 参数,它将调用默认构造函数(即使它在您的代码中不可见)。提示:当您重载类构造函数并删除无参数构造函数时,无参数构造函数实际上仍然可用。

所以不要这样做:

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

这与此相同:

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