【问题标题】:Pass a list from a class to another form's listbox将一个列表从一个类传递到另一个表单的列表框
【发布时间】: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&lt;string&gt; (elozmenyek) 传递给 Form2 的新实例。但是首先创建实例(或者它的构造函数的重载,如果你喜欢这个方法)。删除这个:public ListBox listbox_transfer; 和这个:listBox1 = listbox_transfer,并且不要在创建列表的方法中使用ref:让elozmenyek_method() 返回一个List&lt;string&gt;
  • 感谢您的帮助,现在可以使用了!!而Form2是一个类。

标签: c# winforms class listbox


【解决方案1】:

Form1 public partial class ablak : Form // ablak=Form1 {

// 代码..

    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 form2 = new Form2(elozmenyek);//Pass list as constructor parameter to Form2
        form2.ShowDialog();
    }
}

表格2:

public partial class Form2 : Form
{
    public Form2(List<string> elozmenyek)
    {
        InitializeComponent();
        listBox1.DataSource = elozmenyek; // puts the transfered list into the listbox
    }
}

【讨论】:

  • 像魅力一样工作!谢谢你:)
猜你喜欢
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多