2个列表框,2个文件,2个文件夹

时间:2018-10-01 11:59:24

标签: c# wpf

我是一名初学者程序员,在实习这个项目上我陷入困境

让我们说我在folder1中有hello.txt。Listbox1从folder1中获取了它,并将其放入列表框中。

listbox2对folder2做了相同的事情,除了扩展名不同 例如,在创建完hello.DOCX之后,我需要将hello.txt从listbox1中删除,而不是从folder1中删除

我希望这很清楚

这是我从文件夹中获取文件的代码

private void LBNietGedaan_Loaded(object sender, RoutedEventArgs e)
{
    DirectoryInfo dinfo = new DirectoryInfo(@"C:\Users\nour\Desktop\Niet gedaan");
    FileInfo[] Files = dinfo.GetFiles("*.txt");

    foreach (FileInfo file in Files)
    {
        LB1.Items.Add(file.Name);
    }
} 

private void LBGedaan_Loaded(object sender, RoutedEventArgs e)
{
    //zet files van een folder in de listbox
    DirectoryInfo dinfo = new 
    DirectoryInfo(@"C:\Users\nour\Desktop\Gedaan");
    FileInfo[] Files = dinfo.GetFiles("*.DOCX");

    foreach (FileInfo file in Files)
    {
        LB2.Items.Add(file.Name);
    }
}

2 个答案:

答案 0 :(得分:1)

难道不能只用ObservableCollection制作一个属性,然后将列表框绑定到它吗?然后,您只需清除它,列表框将再次为空。

Binding ObservableCollection to WPF ListBox

答案 1 :(得分:0)

这是伪的,因此可能需要进行一些调整,但是基本上您可以单击按钮,或者在加载列表后将其放在第一个方法中,调整变量以匹配您的变量。

 List<string> one = new List<string>();
        foreach (String string1 in LB1.Items)
        {
            one.Add(string1);
        }
        List<string> two = new List<string>();
        foreach (String string2 in LB2.Items)
        {
            two.Add(string2);
        }

            foreach (String string1 in one)
        {
            foreach (String string2 in two)
            {
            string    cat1 = string1.Substring(0, string1.Length - 4);
              string  cat2 = string2.Substring(0, string2.Length - 5);
                if (cat1.Equals(cat2))
                {
                   LB1.Items.Remove(string1);
                    // if you want to stop after the first match, break; 
                    // else remove break to find all matches;

                    break;
                }
            }
        }

基本上,这将搜索listbox1的项目中的项目,并删除任何名为“ yourtarget.txt”的文件。我认为应该给您正确的方向。如果您需要更多,请告诉我!