2016-07-02 7 views
1

今日、テキストボックスにテキストを入力し、開始ボタンをクリックすると、ファイル内でtextBox1で入力したテキストを検索します。ユーザーがtextBoxで複数のテキストを検索できるようにするにはどうすればよいですか?

ここで、ユーザーがtextBox1に入力すると、何かを追加したいと思っています。たとえば、hello、こんにちは、それはhelloを検索し、またhiを検索します。 1つの文字列/テキストではなく、2つの文字列として分離されます。私が入力した場合:こんにちは、こんにちは、世界今それは同じ時間でも、こんにちはこんにちは、世界のためのファイルを検索します。

textchangedイベント

private void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      if (textBox1.Text != "" && textBox3.Text != "" && Directory.Exists(textBox3.Text)) 
      { 
       startButton.Enabled = true; 
       Properties.Settings.Default["Setting2"] = textBox1.Text; 
       Properties.Settings.Default.Save(); 
      } 
      else 
      { 
       startButton.Enabled = false; 
      } 
     } 

スタートボタンクリックイベント

private void startButton_Click(object sender, EventArgs e) 
     { 
      label21.Visible = true; 
      startButton.Enabled = false; 
      stopButton.Enabled = true; 
      pauseresumeButton.Enabled = true; 
      timer1.Start(); 
      if (!backgroundWorker1.IsBusy) 
      { 
       SetWorkerMode(true); 
       backgroundWorker1.RunWorkerAsync(); 
      } 
     } 

Doworkイベント

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
     { 
      BackgroundWorker worker = sender as BackgroundWorker; 
      _stopwatch.Restart(); 
      DirSearch(textBox3.Text, textBox2.Text, textBox1.Text, worker, e); 
      _stopwatch.Stop(); 
     } 

私は、ファイル内のテキストを検索にDirSearch方法。

void DirSearch(string rootDirectory, string filesExtension, string textToSearch, BackgroundWorker worker, DoWorkEventArgs e) 
     { 
      List<string> filePathList = new List<string>(); 
      List<string> restrictedFiles = new List<string>(); 
      int overallfiles = 0; 
      int numberoffiles = 0; 
      int numberofdirs = 0; 

      try 
      { 
       filePathList = SearchAccessibleFilesNoDistinct(rootDirectory, null).ToList(); 
      } 
      catch (Exception err) 
      { 
       string ad = err.ToString(); 
      } 
      foreach (string file in filePathList) 
      { 
       try 
       { 
        _busy.WaitOne(); 
        if (worker.CancellationPending == true) 
        { 
         e.Cancel = true; 
         return; 
        } 
        List<MyProgress> prog = new List<MyProgress>(); 
        int var = File.ReadAllText(file).Contains(textToSearch) ? 1 : 0; 
        overallfiles++; 
        if (var == 1) 
        { 
         numberoffiles++; 
         prog.Add(new MyProgress { Report1 = file, Report2 = numberoffiles.ToString() }); 
         backgroundWorker1.ReportProgress(0, prog); 
        } 
        numberofdirs++; 
        label1.Invoke((MethodInvoker)delegate 
        { 
         label1.Text = numberofdirs.ToString(); 
         label1.Visible = true; 
        }); 
       } 
       catch (Exception) 
       { 
        restrictedFiles.Add(file); 
        continue; 
       } 
      } 
     } 

DirSearchでは、変数textToSearchにはtextBox1で入力したテキストが含まれています。 私がtextBox1だけを入力した場合、それは今のようにHIの既存のファイルを検索します。

もし私がHI、HELLO、WORLDを入力した場合 HI HELLO WORLDの各ファイルに存在するものを1つのテキスト文字列として検索するのではなく、それぞれの単語が既存のものであることを検索します。

私はこんにちはHELLO WORLDと入力すると、それは1つの文字列/テキストとして検索されますが、ユーザーが入力すると、各単語/テキストを検索する必要があります。

+2

を助けほんの少しのコメントを望むことができる、あなたはあなたを呼び出すべきではありません変数 'var'。 'var'はC言語で特定の意味を持ちます# – Jonathan

答えて

1

あなたは、宇宙に基づいてテキストボックスに入力を分割し、コンマのか、他のセパレータと、あなたの検索方法への個々の入力としてこれらを渡し、これは

関連する問題