我有一个组合框,应该在打开表单时从文本文件填充,但无论文件是否为空,ComboBox
中的第一项是我做的随机测试项尝试一下,根本不存在于文件中。
这是代码:
private void Form1_Load(object sender, EventArgs e)
{
string line;
StreamReader file = new StreamReader("filepath");
while ((line = file.ReadLine()) != null)
{
comboBox1.Items.Add(line);
}
if (comboBox1.Items.Count == 0)
{
comboBox1.SelectedIndex = -1;
comboBox1.SelectedItem = string.Empty;
}
else
{
comboBox1.SelectedIndex = 0;
}
file.Close();
}
除了测试项目之外,ComboBox
填充得很好,但我想删除该测试项目。 ComboBox
的“编辑项目”属性完全为空,因此它不是默认项目,我100%确定文件路径是正确的。
有什么建议吗?
答案 0 :(得分:0)
在加载之前清除组合框项目。
你可能在某个地方有一些默认值。
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.Items.Clear();
答案 1 :(得分:0)
查看comboBox1
的定义位置会有所帮助。
但是,当您从文件中读取文件时,您只是添加现有项目,但不会删除任何可能存在的项目。
添加以下行:
comboBox1.Items.Clear();
循环遍历文件内容之前。但是,这只是一种解决方法,将掩盖问题的真正来源。
我要做的另一件事是检查您是否从文件中读取空行:
while ((line = file.ReadLine()) != null)
{
if (line.Length > 0)
{
comboBox1.Items.Add(line);
}
}
如果您刚刚在设计器中添加了测试项目,那么除非您绝对需要在设计时看到它,否则请删除该初始化。
答案 2 :(得分:0)
或者使用DataBinding
将populatinig ComboBox
与项目
private void Form1_Load(object sender, EventArgs e)
{
List<string> lines = new List<string>();
using (StreamReader file = new StreamReader("filepath"))
{
string line;
while ((line = file.ReadLine()) != null)
{
lines.Add(line);
}
}
comboBox1.DataSource = lines;
}
但是如果你的“测试”项目仍然存在于代码中的某个位置 - 它将被执行。所以最好的解决方案是找到并删除。
只需检查comboBox1
的所有引用。设计器中所做的所有更改都将生成为yourForm.Designer.cs
文件中的代码。