【问题标题】:C# - Get a List<string> data from a form to anotherC# - 从一个表单获取一个 List<string> 数据到另一个表单
【发布时间】:2015-02-09 16:10:30
【问题描述】:

我想就我的问题寻求帮助。我的问题是我无法从另一个表单中获取 List 的值并将其传输到另一个表单的 ListBox 中。我想让 List 的元素成为列表框的数据源。

这些是我的程序的截图。

这是我的 Form1 的代码。

public Form1()
    {
        InitializeComponent();
    }

    public List<string> list = new List<string>();
    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();

        form2.ShowDialog();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        list.Add("!");

        MessageBox.Show(list.Count.ToString());
    }

然后在我的 Form2 中,我创建了一个 Form1 的实例并调用了 List 列表,但是当 Form2 加载时,ListBox 没有填充数据,并且在 Form2 加载时 List 列表似乎不包含任何数据.这是我在 Form2 中的代码。

public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        Form1 form1 = new Form1();

        listBox1.DataSource = form1.list;
    }

知道如何解决这个问题吗?我尝试了我能做的一切,但我无法解决问题。抱歉我的错误,我只是 C# 的初学者,在我的课程中和在 stackoverflow 中。提前谢谢你。

【问题讨论】:

  • 在 form2 上创建一个构造函数,接受 list 并传递类似的值。 public Form2(List collection){//做逻辑}

标签: c# list listbox datasource


【解决方案1】:

在 Form1 中,更改:

form2.ShowDialog();

收件人:

form2.ShowDialog(this); // pass in this Form1 instance as the "Owner"

然后在Form2中,更改:

private void Form2_Load(object sender, EventArgs e)
{
    Form1 form1 = new Form1();
    listBox1.DataSource = form1.list;
}

收件人:

private void Form2_Load(object sender, EventArgs e)
{
    Form1 f1 = (Form1)this.Owner;
    listBox1.DataSource = f1.list;
}

【讨论】:

  • 使用这种方法,您只能将 Form2 与 Form1 一起使用(因为我们将 Owner 转换为 Form1 类型)。如果您打算将 Form2 与其他表单一起使用,请使用 baryo 发布的构造函数方法。这种方法是一种“紧耦合”方法,而 baryo 是一种“松耦合”方法。
【解决方案2】:

Form2 的构造函数中,您正在使用新的ListBox 对象创建Form1 的新实例,该对象为空。 您应该将ListBox 的数据源通过其构造函数传递给Form2

public class Form2
{
     public Form2(Array arr)
     {
        listBox.DataSource = arr;
     }
}

重要的是不要直接传递Form 对象,以免在这些表单之间产生耦合 - 我们只对数据感兴趣。

【讨论】:

  • 如果您使用这种方法,请将Form2 form2 = new Form2(); 更改为Form2 form2 = new Form2(list);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
相关资源
最近更新 更多