C#Combobox填充了非礼物

时间:2016-12-06 16:25:34

标签: c# file combobox

我有一个组合框,应该在打开表单时从文本文件填充,但无论文件是否为空,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%确定文件路径是正确的。 有什么建议吗?

3 个答案:

答案 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文件中的代码。