我怎样才能使用户能够搜索多个文本与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,那么它将搜索它作为一个字符串/文本,但一旦用户输入,它应该搜索每个单词/文本。
您可以根据空格,逗号或任何其他分隔符分割文本框中的输入,然后将这些作为单独的输入传递给您的搜索方法,希望这有助于