我的问题很小白,就是实现richtextbox的查找功能 控件只有三个:一个按钮,一个richtextbox,一个Textbox
Textbox输入要查找的内容:例如baby,然后按那个按钮,然后richtextbox里的"baby"就变成红色。可是,我想了很久写出了这样一个代码:private void button1_Click(object sender, EventArgs e)
{
char[] textc = textBox2.Text.ToCharArray();
char[] rtextc = richTextBox1.Text.ToCharArray(); //把两个文本框的内容变成数组;
for (int i = 0; i < rtextc.Length - textc.Length + 1; i++)
{int tempi = i;
int temp=0;
for (int j = 0; j < textc.Length; j++) //小循环是判断的模块;
{
if (textc[j] == rtextc[i])
{
temp++;
tempi++; } }
if (temp == textc.Length) //实现变色的模块
{
richTextBox1.SelectionStart = i;
richTextBox1.SelectionLength = textc.Length;
richTextBox1.SelectionColor = Color.CadetBlue;
}
}
}哥哥,奇怪的就是,按Cril+F5运行了第一次是可以的,可是第二次就不行了,为什么这样的啊?不是每次运行都是重新开始的吗??
哥哥们有什么好的方法解决这个问题的可以告诉一下小弟我吗?Thanks!O(∩_∩)O
Textbox输入要查找的内容:例如baby,然后按那个按钮,然后richtextbox里的"baby"就变成红色。可是,我想了很久写出了这样一个代码:private void button1_Click(object sender, EventArgs e)
{
char[] textc = textBox2.Text.ToCharArray();
char[] rtextc = richTextBox1.Text.ToCharArray(); //把两个文本框的内容变成数组;
for (int i = 0; i < rtextc.Length - textc.Length + 1; i++)
{int tempi = i;
int temp=0;
for (int j = 0; j < textc.Length; j++) //小循环是判断的模块;
{
if (textc[j] == rtextc[i])
{
temp++;
tempi++; } }
if (temp == textc.Length) //实现变色的模块
{
richTextBox1.SelectionStart = i;
richTextBox1.SelectionLength = textc.Length;
richTextBox1.SelectionColor = Color.CadetBlue;
}
}
}哥哥,奇怪的就是,按Cril+F5运行了第一次是可以的,可是第二次就不行了,为什么这样的啊?不是每次运行都是重新开始的吗??
哥哥们有什么好的方法解决这个问题的可以告诉一下小弟我吗?Thanks!O(∩_∩)O
解决方案 »
- 繁体系统运行简体系统下编译的程序,出现乱码
- C/S结构Remoting做服务器端,客户端的文件通过怎么较好的方式上传到服务器指定的文件夹里面
- 如何获取一个TEXTBOX的句柄
- 导出个txt文件,当在别的地方使用识别不出是txt文件,何为 ?
- 为什么我制作安装时,加入自定义操作后快捷方式的执行结果是重新安装,而不加入自定义操作时,一切正常!
- \=\=修饰符的顺序问题,SOSSOSOSOSOSOSSOOSOSSOSO\=\===
- 关于SQL注入问题(大家有什么好的建议,过来看看)
- C#窗体动态生成控件?用循环语句
- 怎样为以泛型为数据源的DataGridView设置中文表头?
- C#中怎样判断一封邮件已经发送?
- C#如何知道那个网卡正在使用???如果有多个网卡。
- 自定义的鼠标Cursor 有的鼠标Cursor文件可以 有的不可以 不知cur文件用什么要求?
{
object wantedNode = stackPanel.FindName("dog");
if (wantedNode is TextBlock)
{
// Following executed if Text element was found.
TextBlock wantedChild = wantedNode as TextBlock;
wantedChild.Foreground = Brushes.Blue;
}
}
,按Cril+F5运行了第一次是可以的,可是第二次就不行了没有这个问题!
private int FindNext(string szFindText, bool bMatchCase, bool bReverse)
{
if (szFindText == null)
return -1; RichTextBoxFinds findOptions = RichTextBoxFinds.None; int start = this.richTextBox1.SelectionStart;
int end = start; if (bReverse)
{
if (start == 0)
return -1;
start = 0;
end = this.richTextBox1.SelectionStart;
findOptions |= RichTextBoxFinds.Reverse;
}
else
{
if (start == this.richTextBox1.TextLength)
return -1;
start += this.richTextBox1.SelectionLength;
end = this.richTextBox1.TextLength;
this.richTextBox1.SelectionStart = start;
}
this.richTextBox1.SelectionLength = 0; if (bMatchCase)
{
findOptions |= RichTextBoxFinds.MatchCase;
}
return this.richTextBox1.Find(szFindText, start, end, findOptions);
}private void button1_Click(object sender, EventArgs e)
{
int result = this.FindNext(this.textBox1.Text, 是否区分大小写, false);
if(result >= 0)
{
this.richTextBox1.SelectionColor = Color.Red; //把查到的字符设置为红色
}
}
注意:这里是从当前光标位置处开始查找的。