private void goButton_Click(object sender, EventArgs e) { //Give the user the option to name the rules //This might be phased out later when there are RuleSet-specific options (including naming, hopefully) //We just want the user to be comfortable with naming rule sets, to allow for a more object-oriented paradigm with the RuleSet object in the future if (this._rules.SetName.Equals("Unnamed") && (MessageBox.Show("Do you want to name this rule set?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)) { var namingDialog = new CustomDialog("Edit Name...", "[Enter name for this set of rules]", "OK", "Cancel"); namingDialog.EnableEditing = true; //goto header in case the name is invalid Name: if (namingDialog.ShowDialog() == DialogResult.OK) { var regex = new Regex("[" + Regex.Escape(new string(System.IO.Path.GetInvalidPathChars())) + "]"); if (namingDialog.MessageText.Equals("[Enter name for this set of rules]")) { MessageBox.Show("Enter a name for this set of rules!", "Error: No name!", MessageBoxButtons.OK); goto Name; } else if (regex.IsMatch(namingDialog.MessageText)) { MessageBox.Show("Invalid name! Please try again.", "Error: Invalid name", MessageBoxButtons.OK); goto Name; } else { this._rules.SetName = namingDialog.MessageText; namingDialog.Dispose(); //Only dispose after grabbing the message text this._stats = new RenamingStats(this._rules.RuleList); this.Execute(); } } } else { this._stats = new RenamingStats(this._rules.RuleList); this.Execute(); } }