将一个列表从一个类传递到另一个表单的列表框

Posted

技术标签:

【中文标题】将一个列表从一个类传递到另一个表单的列表框【英文标题】: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是一个类。 【参考方案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
    

【讨论】:

像魅力一样工作!谢谢你:)

以上是关于将一个列表从一个类传递到另一个表单的列表框的主要内容,如果未能解决你的问题,请参考以下文章

将值从表单传递到表单

PySimpleGui:如何将值从一个列表框添加到另一个列表框

在 C# 中将所选项目从一个列表框移动到另一个列表框

将列表框选定项从一个 wpf 页面发送到另一个页面

通过在列表下拉组合框中选择它来访问 VBA 代码以转到另一个表单上的特定记录

列表框使用类模块