public MainForm()
        {
            InitializeComponent();

            // 設定が無い場合初期化
            if (Settings.Default.SearchDirectories == null)
                Settings.Default.SearchDirectories = new System.Collections.Specialized.StringCollection();

            if (Settings.Default.ExtensionFilters == null)
            {
                Settings.Default.ExtensionFilters = new System.Collections.Specialized.StringCollection();
                Settings.Default.ExtensionFilters.AddRange(new []{
                    "False,*,全てのファイル",
                    "True,txt,テキストファイル",
                    "False,md|markdown,Markdown ファイル",
                });
            }

            if (Settings.Default.EditorPath == null)
                Settings.Default.EditorPath = String.Empty;

            if (Settings.Default.EditorCommandLine == null)
                Settings.Default.EditorCommandLine = String.Empty;

            // 設定をロード
            searchDirectories = new List<string>(Settings.Default.SearchDirectories.Cast<string>());
            extensionFilters = ExtensionFilters.Deserialize(Settings.Default.ExtensionFilters.Cast<string>());
            editorPath = Settings.Default.EditorPath;
            editorCommandLine = Settings.Default.EditorCommandLine;
        }
        public SelectExtensionsDialog(ExtensionFilters filters)
        {
            InitializeComponent();
            Filters = filters; // コピーオンライトするため直接セットする

            if (Filters.Filters.Count() >= 1)
            {
                extensionsView.Items.Clear();
                var items = new List<ListViewItem>();
                foreach (var f in Filters.Filters)
                {
                    var item = new ListViewItem(new[] {"", f.ExtensionsString, f.Description});
                    item.Checked = f.Enabled;
                    items.Add(item);
                }
                extensionsView.Items.AddRange(items.ToArray());
            }
            // else if count == 0 : ListViewにデフォルトのフィルタ列をセット (フォームデザイナ)
        }
        private void okButton_Click(object sender, EventArgs e)
        {
            var filters =
                from item in extensionsView.Items.Cast<ListViewItem>()
                select new ExtensionFilter(item.Checked, item.SubItems[1].Text, item.SubItems[2].Text);

            Filters = new ExtensionFilters(filters); // 新しい設定に置き換える
        }
 public SelectExtensionsDialog()
 {
     InitializeComponent();
     Filters = new ExtensionFilters();
 }
        /// <summary>
        /// イベント : メニューの「設定 >> 検索する拡張子を選択」が選択された
        /// 検索する拡張子選択ダイアログを表示する。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SelectExtensionsItem_Click(object sender, EventArgs e)
        {
            var dialog = new SelectExtensionsDialog(extensionFilters);
            if (dialog.ShowDialog(this) == DialogResult.OK)
            {
                extensionFilters = dialog.Filters;

                System.Diagnostics.Debug.WriteLine(String.Join("\n", extensionFilters.Serialize()));
            }
        }