【Winform】中級:ファイル検索アプリのチュートリアル

このチュートリアルでは、中級者向けにC#とWinFormを使ったファイル検索アプリを作成します。このアプリを通じて、ディレクトリの操作、ファイルの検索、結果のフィルタリング、リストビューの操作などの技術を学べます。ユーザーは指定したフォルダ内のファイルを検索し、その結果を一覧表示することができます。このプロジェクトを通して、複雑なディレクトリ操作と効率的な検索アルゴリズムの基礎を学べます。

1. プロジェクトのセットアップ

  1. Visual Studio を開き、新しい「Windows フォームアプリケーション (.NET Framework)」プロジェクトを作成します。
  2. プロジェクト名を「FileSearchApp」にします。
  3. Form1の名前をFileSearchFormに変更し、Textプロパティも「ファイル検索アプリ」に設定します。

2. 基本的なUIの配置

  1. TextBox コントロールをフォームに追加し、プロパティを次のように設定します:
    • Name: directoryTextBox
    • Dock: Top
    • PlaceholderText: “検索するディレクトリを入力"
  2. Button コントロールを2つ追加し、それぞれ次のように設定します:
    • Name: browseButton, Text: “参照"
    • Name: searchButton, Text: “検索"
    • それぞれのDock: Top
  3. TextBox コントロールをもう一つ追加し、プロパティを次のように設定します:
    • Name: filterTextBox
    • Dock: Top
    • PlaceholderText: “検索フィルタを入力(例: *.txt)"
  4. ListView コントロールをフォームに追加し、プロパティを次のように設定します:
    • Name: resultListView
    • View: Details
    • FullRowSelect: True
    • GridLines: True
    • Dock: Fill
    • Columns: “ファイル名", “パス"
  5. FolderBrowserDialog コントロールをフォームに追加します(非表示のコンポーネント)。

3. ファイル検索の実装

以下のコードを使って、ファイル検索アプリの基本ロジックを実装します。

using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;

namespace FileSearchApp
{
    public partial class FileSearchForm : Form
    {
        public FileSearchForm()
        {
            InitializeComponent();
            InitializeFileSearchApp();
        }

        private void InitializeFileSearchApp()
        {
            browseButton.Click += BrowseButton_Click;
            searchButton.Click += SearchButton_Click;
        }

        private void BrowseButton_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
            {
                directoryTextBox.Text = folderBrowserDialog.SelectedPath;
            }
        }

        private void SearchButton_Click(object sender, EventArgs e)
        {
            string directory = directoryTextBox.Text;
            string filter = filterTextBox.Text;

            if (Directory.Exists(directory) && !string.IsNullOrEmpty(filter))
            {
                resultListView.Items.Clear();

                var files = Directory.GetFiles(directory, filter, SearchOption.AllDirectories);

                foreach (var file in files)
                {
                    var item = new ListViewItem(Path.GetFileName(file));
                    item.SubItems.Add(file);
                    resultListView.Items.Add(item);
                }

                MessageBox.Show($"{files.Length} 件のファイルが見つかりました。", "検索結果", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("有効なディレクトリとフィルタを入力してください。", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}

4. ファイル検索とフィルタリング

  • 「参照」ボタンをクリックすると、フォルダ選択ダイアログが表示され、検索するディレクトリを選択できます。
  • 「検索」ボタンをクリックすると、指定したディレクトリ内のファイルがフィルタに基づいて検索され、結果がリストビューに表示されます。

5. ディレクトリの操作とリストビューの更新

検索結果は、リストビューに表示され、ファイル名とフルパスが確認できます。複数のファイルを一度に処理する方法や、結果を整理する手法を学ぶことができます。

まとめ

この中級チュートリアルでは、ディレクトリの操作、ファイルの検索、結果のフィルタリング、リストビュー操作といった、より高度なWinForm機能を学びました。このファイル検索アプリケーションを作成することで、複雑なディレクトリ操作や検索ロジックの理解が深まり、実践的なアプリケーションを構築するスキルが身に付きます。