在组合框中选择了错误的项目(C#,WPF)

时间:2014-07-20 18:02:29

标签: c# wpf combobox textbox fileinfo

在组合框中选择了错误的项目(C#,WPF)

我有一个comboBox和一个textBox。当我在组合框中选择一个项目(html文件)时,我想将内容添加到我的文本框中。这是我到目前为止所得到的:

public void SetDataPoolToComboBox()
    {
        comboBox_DataPool.Items.Clear();

        comboBox_DataPool.Items.Add("Please choose a file...");
        comboBox_DataPool.SelectedIndex = 0;

        if (true == CheckPath())
        {
            foreach (string s in Directory.GetFiles(pathTexts, "*.html"))
            {
                comboBox_DataPool.Items.Add(Path.GetFileNameWithoutExtension(s));
            }
        }
    }

public void comboBox_DataPool_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        SetContentToTextBox();
    }

    public void SetContentToTextBox()
    {
        if (true == CheckPath())
        {
            FileInfo[] fileInfo = directoryInfo.GetFiles("*.html");
            if (fileInfo.Length > 0)
            {
                if (comboBox_DataPool.Text == "Please choose a file..." || comboBox_DataPool.Text == "")
                {
                    textBox_Text.Text = string.Empty;
                }
                else
                {
                    StreamReader sr = new StreamReader(fileInfo[comboBox_DataPool.SelectedIndex].FullName, Encoding.UTF8);
                    textBox_Text.Text = sr.ReadToEnd();
                    sr.Close();
                }
            }
        }
    }

问题:当我选择第二项时,会显示第三项的内容。每次都发生同样的事情 - 无论我选择哪个项目都无关紧要。当我选择最后一个项目时,应用程序被踢:“错误:索引超出范围!”

1 个答案:

答案 0 :(得分:0)

问题是你添加了一个虚拟字符串"请在你的comboBox的items集合中选择一个文件..." ,然后添加fileInfos集合项。

因此,如果 selectedIndex为1将指向集合中的第0个项目。因此,在从fileInfo集合中获取项目时,您需要从comboBox_DataPool.SelectedIndex - 1索引位置获取项目。


更改

StreamReader sr = new StreamReader(fileInfo[comboBox_DataPool.SelectedIndex]
                                    .FullName, Encoding.UTF8);

StreamReader sr = new StreamReader(fileInfo[comboBox_DataPool.SelectedIndex - 1]
                                    .FullName, Encoding.UTF8);