0

特定の形式の特定のファイルのみを含むリストボックスのコンテンツを表示することはできますか? BMP|*.bmp|GIF|*.gif|JPG|*.jpg;*.jpeg|PNG|*.png|TIFF|*.tif;*.tiffリストボックス内に表示したいこれらの拡張子を持つこれらのファイルのみが好きですlstFiles

私が試してみました、

lstFiles.Filter = "BMP|*.bmp|GIF|*.gif|JPG|*.jpg;*.jpeg|PNG|*.png|TIFF|*.tif;*.tiff";

しかし、これはうまくいきませんでした。

編集:

システムドライブ、フォルダー、およびそのコンテンツを表示するための3つの共同リストボックスがあります

private void lstDrive_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            lstFolders.Items.Clear();

            try
            {
                DriveInfo drive = (DriveInfo)lstDrive.SelectedItem;

                foreach (DirectoryInfo dirInfo in drive.RootDirectory.GetDirectories())
                    lstFolders.Items.Add(dirInfo);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void lstFolders_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            lstFiles.Items.Clear();

            DirectoryInfo dir = (DirectoryInfo)lstFolders.SelectedItem;

            foreach (FileInfo fi in dir.GetFiles())
                lstFiles.Items.Add(fi);
        }

        private void lstFiles_SelectedIndexChanged(object sender, EventArgs e)
        {
            pictureBox1.Image = Image.FromFile(((FileInfo)lstFiles.SelectedItem).FullName);

        }

        private int lastIndex = 0;

        private void lstFiles_KeyUp(object sender, KeyEventArgs e)
        {

            if (lstFiles.SelectedIndex == lastIndex)
            {
                if (e.KeyCode == Keys.Up)
                {
                    lstFiles.SelectedIndex = lstFiles.Items.Count - 1;
                }

                if (e.KeyCode == Keys.Down)
                {
                    lstFiles.SelectedIndex = 0;
                }

            }

            lastIndex = lstFiles.SelectedIndex;
        }
    }
}
4

2 に答える 2

2

オブジェクトを使用して、リストボックスを自分で作成していFileInfoます。FileInfoプロパティを持っていますExtension。それをフィルタリングに使用できます:

    private void lstFolders_SelectedIndexChanged_1(object sender, EventArgs e)
    {
        lstFiles.Items.Clear();

        DirectoryInfo dir = (DirectoryInfo)lstFolders.SelectedItem;

        foreach (FileInfo fi in dir.GetFiles())
            switch(fi.Extension.ToUpperInvariant())
            {
               case ".BMP":
               case ".JPG":
               ...
                    lstFiles.Items.Add(fi);
                    break;
             }
     }
于 2013-02-12T20:56:52.053 に答える
0

わかりました、私は個人的にリストボックスで「フィルター」を使用することを知りませんし、聞いたこともありません。リストができたら、欲しいアイテムを追加してみませんか?

lstFiles.Items.Clear();

List<string> allowedExtensions = new List<string>() {".jpg", ".png", ".gif"};

DirectoryInfo dir = (DirectoryInfo)lstFolders.SelectedItem;

foreach (FileInfo fi in dir.GetFiles().Where((x)=>allowedExtensions.Contains(x)))
{
    lstFiles.Items.Add(fi);
}
于 2013-02-12T21:02:39.550 に答える