我怎样才能使用户能够搜索多个文本与textBox

本文关键字:文本 textBox 搜索 用户 | 更新日期: 2023-09-27 17:54:19

今天当我在textBox1中输入任何文本,然后点击开始按钮,它会在文件中搜索我在textBox1中输入的文本。

现在我想添加一些东西,如果用户在textBox1中输入例如:hello,hi,它将搜索hello,并在文件中搜索hi。不是一个字符串/文本,而是两个分开的。如果我输入:hello,hi,world它会同时在相同的文件中搜索hello,hi和world。

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。

但是如果我输入HI,HELLO,WORLD现在我想让它搜索存在于HI HELLO WORLD的每个文件中,而不是作为一个文本字符串,而是每个单词在它自己的存在。

如果我输入Hi HELLO WORLD,那么它将搜索它作为一个字符串/文本,但一旦用户输入,它应该搜索每个单词/文本。

我怎样才能使用户能够搜索多个文本与textBox

您可以根据空格,逗号或任何其他分隔符分割文本框中的输入,然后将这些作为单独的输入传递给您的搜索方法,希望这有助于