ListBox从按钮添加

时间:2013-03-26 02:37:22

标签: c# winforms

好的,我的网页浏览器(form1)中有一个名为bookmark的按钮。我希望它将URL添加到Form3中的列表框中。当我尝试时,我因错误而出错。

此错误:

enter image description here

但是我将代码更改为:

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

仍有错误

完整代码:

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

1 个答案:

答案 0 :(得分: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();

或者如果Form3启动/实例化AddFavorites表单:

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();