在组合框中选择了错误的项目(c#, WPF)
本文关键字:项目 WPF 错误 组合 选择 | 更新日期: 2023-09-27 18:14:00
组合框选项选择错误(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();
}
}
}
}
问题:当我选择第二个项目时,显示第三个项目的内容。每次都会发生同样的事情——不管我选择哪个项目。当我选择最后一项时,应用程序被踢出:"错误:索引超出范围!"
问题是您添加了一个虚拟字符串"请选择一个文件…"在comboBox的项目集合中,并在之后添加fileinfo集合项目。
因此,如果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);