我正在解决一个问题,我将文本文件加载到字符串列表并显示在列表框中(我已经完成)但我现在想要一个按钮事件将列表的内容放在第二个列表框中,这是刚出现空白。我可以很容易地在VB中做到这一点,但我对C#很新,并意识到我可能遗漏了一些明显的东西。
namespace texttoarray
{
public partial class Form1 : Form
{
public int counter;
public List<string> finalList;
public Form1()
{
InitializeComponent();
List<string> finalList = AddToList();
}
public List<string> AddToList()
{
counter = 0;
string line;
List<string> list = new List<string>();
System.IO.StreamReader file = new System.IO.StreamReader(@"list.txt");
while ((line = file.ReadLine()) != null)
{
listBox1.Items.Add(line);
list.Add(line);
counter++;
}
//listBox2.DataSource = list;
MessageBox.Show(counter.ToString());
return list;
}
public void button1_Click(object sender, EventArgs e)
{
listBox2.DataSource = finalList;
}
}
}
答案 0 :(得分:3)
您正在构造函数中创建本地列表。您应该将AddToList
方法的结果分配到字段finalList
。
您的代码:
List<string> finalList;
public Form1()
{
InitializeComponent();
List<string> finalList = AddToList(); //Creation of new local variable 'finalList'
}
<强>解决方案:强>
List<string> _finalList;
public Form1()
{
InitializeComponent();
_finalList = AddToList(); //Use '_finalList' field
}
注意:如果您使用了适当的命名约定,则可以轻松检测到这一点。即私有字段名称应以下划线开头。公共实例变量应以大写字母开头。