private void okButton_Click(object sender, EventArgs e)
        {
            var exts = extensionsBox.Text.Trim();
            var re = new Regex(@"^(?:\*|(?:[_0-9a-z]+)(?:\s*\|\s*(?:[_0-9a-z]+))*)$",
                RegexOptions.IgnoreCase);

            if (!re.IsMatch(exts))
            {
                MessageBox.Show(this, "拡張子の入力に誤りがあります。拡張子に使える文字は[_0-9a-zA-Z]です。",
                    this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            Filter = new ExtensionFilter(false, exts, descriptionBox.Text.Trim());
        }
        private void editButton_Click(object sender, EventArgs e)
        {
            var item = extensionsView.SelectedItems.Cast<ListViewItem>().DefaultIfEmpty(null).First();
            if (item == null)
            {
                MessageBox.Show(this, "項目が選択されていません。", this.Text,
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            var filter = new ExtensionFilter(false, item.SubItems[1].Text, item.SubItems[2].Text);
            var dialog = new InputExtensionDialog(filter);
            if (dialog.ShowDialog(this) == DialogResult.OK)
            {
                item.SubItems[1].Text = dialog.Filter.ExtensionsString;
                item.SubItems[2].Text = dialog.Filter.Description;
            }
        }
 public InputExtensionDialog(ExtensionFilter filter)
 {
     InitializeComponent();
     Filter = filter; // コピーオンライトのためそのままセットする
 }