是否通过其他表单的数据范围更新列表框不起作用



我目前正试图从Form2上的richtextbox中获取数据,并在Form1中使用它来更新列表框并存储数据以供其他用途,如保存到文件。

UpdateData((中存在正确的数据=>当我通过控制台循环浏览数据时。WriteLine,但它不会被添加到ListBox中。

不知道atm为什么和帮助会感谢

Form1中用于更新现有列表框(lb_Items(的代码

public void UpdateData()
{
data.AddRange(DataTransfer.PullData);
UpdateItemBox(data);
}
private void UpdateItemBox(List<string> data)
{
lb_Items.DataSource = null;
lb_Items.DataSource = data;
}

Form2内部的代码用于从richtextbox(rtb_data(发送数据,并调用Form1 上的更新函数

DataTransfer.PullData = rtb_Data.Lines;
Form1 f1 = new Form1();
f1.UpdateData();      

数据传输类

public static class DataTransfer
{
public static string[] PullData { get; set; }
}

我想你的表单1创建了你的表单2,所以你可以让它得到行

把这个放在表格2中

public List<string> GetRtbLines()
{
return rtb_Data.Lines.ToList();
}

在表单1中显示表单2的任何按钮中(我认为表单2基本上只是一个对话框,这样用户就可以将行粘贴到表单1的列表中使用(放置

void SomeX_Click(object sender, EventArgs e){
var f2 = new Form2();
f2.ShowDialog();
lb_Items.DataSource = f2.GetRtbLines();
}

你可以跳过剩下的代码/数据传输/更新等…


如果form2是一个长期存在的东西,它会重复地将新数据推入列表/与form1一起保持打开状态,那么您可以:

修改form2的构造函数:

private Form1 _f1;
public Form2(Form1 f1){
InitializeComponent();
_f1 = f1;
}

在f1中有一些方法:

public void AddLines(string[] lines){
(lb_Items.DataSource as List<string>).AddRange(lines);
}

确保lb项在form1构造函数中有一个列表DataSource(这样上面的代码就不会崩溃(

lb_Items.DataSource = new List<string>();

每当你有新的线路要添加:

void AddLinesButton_Click(object sender, EventArgs e){
_f1.AddLines(rtb_Data.Lines);
}

最新更新