【发布时间】:2020-07-25 04:29:34
【问题描述】:
我目前正在开发我的第一个真正的项目,一个基于 Gecko 的 WinForms 原始浏览器(我是初学者,请不要对我苛刻)。 浏览器本身位于 Form1 (ablak) 中,当我单击历史按钮时,Form 2 应该会弹出一个历史列表框。 当我试图弄清楚如何将列表从 Form1 发送到 Form2 时,我的思维被阻塞了。 (当我在 form1 中使用 ListBox 进行尝试时,它起作用了)
表格1:
public partial class ablak : Form // ablak=Form1
{
// codes..
List<string> elozmenyek = new List<string>(); // the history list
public void elozmenyek_method(ref List<string> elozmenyek)
{
foreach (GeckoHistoryEntry _E in geckoWebBrowser1.History)
{
elozmenyek.Add(_E.Url.ToString()); // putting the urls into the list
}
}
public void elozmenyek_gomb_Click(object sender, EventArgs e)
{
elozmenyek_method(ref elozmenyek);
Form2.listbox_transfer.DataSource = elozmenyek; // when i click it sends the history list to Form2's listbox_transfer list
}
}
表格2:
public partial class Form2 : Form
{
public ListBox listbox_transfer;
public Form2()
{
InitializeComponent();
listBox1 = listbox_transfer; // puts the transferred list into the ListBox
}
}
提前谢谢你!
【问题讨论】:
-
什么是
Form2?是类名还是Form2类的实例(貌似是前者)?然后,使用公共属性或方法将List<string>(elozmenyek) 传递给 Form2 的新实例。但是首先创建实例(或者它的构造函数的重载,如果你喜欢这个方法)。删除这个:public ListBox listbox_transfer;和这个:listBox1 = listbox_transfer,并且不要在创建列表的方法中使用ref:让elozmenyek_method()返回一个List<string>。 -
感谢您的帮助,现在可以使用了!!而Form2是一个类。