C# 使用textbox筛选列表框,而使用文件名填充列表框
我无法在这里找到一个解决方案,因为它的填写方式与其他类似问题不同 基本上,我想过滤一个包含Dvd名称的列表框 列表框的填充方式:C# 使用textbox筛选列表框,而使用文件名填充列表框,c#,wpf,filter,textbox,listbox,C#,Wpf,Filter,Textbox,Listbox,我无法在这里找到一个解决方案,因为它的填写方式与其他类似问题不同 基本上,我想过滤一个包含Dvd名称的列表框 列表框的填充方式: private void AdminShop_Load(object sender, EventArgs e) { string[] files = Directory.GetFiles("C:\\DvDShop\\DvdNames\\"); foreach (string file in files) {
private void AdminShop_Load(object sender, EventArgs e)
{
string[] files = Directory.GetFiles("C:\\DvDShop\\DvdNames\\");
foreach (string file in files)
{
lbxDvd.Items.Add(System.IO.Path.GetFileNameWithoutExtension(file));
}
}
到目前为止,在textChanged中,当我在textbox中输入任何文本时,列表框将变为空白,但当我删除textbox中的任何内容时,列表框将再次填充所有条目。我觉得我错过了一个简单的问题
文本更改:
private void txtSearch_TextChanged(object sender, EventArgs e)
{
string[] files = Directory.GetFiles("C:\\DvDShop\\DvdNames\\");
if (String.IsNullOrEmpty(txtSearch.Text.Trim()) == false)
{
lbxDvd.Items.Clear();
foreach (string file in files)
{
if (file.StartsWith(txtSearch.Text.Trim()))
{
lbxDvd.Items.Add(System.IO.Path.GetFileNameWithoutExtension(file));
}
}
}
else if (txtSearch.Text.Trim() == "")
{
lbxDvd.Items.Clear();
foreach (string file in files)
{
lbxDvd.Items.Add(System.IO.Path.GetFileNameWithoutExtension(file));
}
}
}
任何对我的小问题的帮助都将不胜感激 如果要使用完整路径检查它是否以它开头,请尝试以下代码:
private void txtSearch_TextChanged(object sender, EventArgs e)
{
string[] files = Directory.GetFiles("C:\\DvDShop\\DvdNames\\");
if (String.IsNullOrEmpty(txtSearch.Text.Trim()) == false)
{
lbxDvd.Items.Clear();
foreach (string file in files)
{
string filename = System.IO.Path.GetFileNameWithoutExtension(file);
if (filename.StartsWith(txtSearch.Text.Trim()))
{
lbxDvd.Items.Add(System.IO.Path.GetFileNameWithoutExtension(file));
}
}
}
else if (txtSearch.Text.Trim() == "")
{
lbxDvd.Items.Clear();
foreach (string file in files)
{
lbxDvd.Items.Add(System.IO.Path.GetFileNameWithoutExtension(file));
}
}
}
您正在检查返回完整路径的
目录.GetFiles()
。而是获取文件名并像这样检查
foreach (string file in files)
{
string filename = System.IO.Path.GetFileNameWithoutExtension(file);
if (filename.StartsWith(txtSearch.Text.Trim()))
{
lbxDvd.Items.Add(filename);
}
}
请举例说明您的文件名以及您在文本框中输入的内容可能应该是
string filename=System.IO.Path.GetFileNameWithoutExtension(文件);如果(filename.StartsWith(txtSearch.Text.Trim()
…@Rahul)这里有一些图片来说明这个问题:1:2:3:无论如何,我认为这是非常不有效的。你应该使用ObservableCollection并使用过滤器,而不是从列表框中添加/删除项目。就是这样!它现在工作得很好!非常感谢你Pikoh!