2016-07-02 5 views
1

오늘 textBox1에 텍스트를 입력 한 다음 시작 버튼을 클릭하면 textBox1에 입력 한 텍스트 파일을 검색합니다.사용자가 textBox로 여러 텍스트를 검색 할 수있게하려면 어떻게해야합니까?

이제 어떻게 든 사용자가 textBox1에 입력하면 어떻게 든 추가하고 싶습니다. hello, hi hello를 검색하고 hi를 검색합니다. 하나의 문자열/텍스트가 아닌 두 개의 문자열. 내가 입력하면 : 안녕하세요, 안녕하세요, 세계 이제 안녕하세요 안녕과 세계에 대해서도 같은 시간에 동일한 파일을 검색합니다.

의 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를 입력하면 안녕하세요 HELLO WORLD의 각 파일에 하나의 텍스트 문자열이 아니라 각 단어가 이미 존재한다고 검색하고 싶습니다.

안녕하세요 HELLO WORLD를 입력하면 한 줄/텍스트로 검색되지만 한 번 사용자가 입력하면 각 단어/텍스트를 검색해야합니다.

당신은 공간에 따라 텍스트 상자에 입력을 분할 할 수 있습니다
+2

조금 코멘트 도움이되기를 바랍니다, 당신은 전화를 안 당신의 변수'var'. 'var'은 C#에서 특별한 의미를가집니다. – Jonathan

답변

1

가, 쉼표 나 다른 분리 한 후, 당신의 검색 방법에 대한 개별 입력으로이 전달이

관련 문제