public SearchEngine(SearchCriteria criteria)
 {
     if (criteria == null)
         throw new ArgumentNullException("Criteria cannot be null");
     this.criteria = criteria;
     PrepareEngine();
 }
 private void btnSearch_Click(object sender, EventArgs e)
 {
     if (!IsValid())
         return;
     AddQuickSearchItems();
     SetFormCaption(cmbDirectory.Text);
     txtDebug.Text = "";
     matches = new BindingList<CMatch>();
     grdResults.DataSource = matches;
     var sc = new SearchCriteria
     {
         Find = cmbFind.Text,
         Folder = cmbDirectory.Text,
         Filter = cmbFilters.Text,
         Exclude = cmbExclude.Text,
         InSubFolders = chkSub.Checked,
         CaseSensitive = chkCase.Checked,
         WholeWords = chkWhole.Checked
     };
     if (rbRegex.Checked) sc.SearchMode = SearchCriteria.SearchModes.RegEx;
     else if (rbExtended.Checked) sc.SearchMode = SearchCriteria.SearchModes.Extended;
     else sc.SearchMode = SearchCriteria.SearchModes.Normal;
     searchWorker.Execute(sc);
     btnSearch.Enabled = false;
     btnClose.Text = "Cancel";
 }
 public void Execute(SearchCriteria searchCriteria)
 {
     worker.RunWorkerAsync(searchCriteria);
 }