richTextBox1 选择文本问题

冷猫 2008-07-16 06:49:27
在系统自带的记事本有一个功能是查找,他先查找第一个,然后我们接着按查找,他会查找文本中的第二个要查找的位置,然后将那个查找的字在文本中以选中的方式显示,我也想实现这样的效果,但是我只做出了查找第一个,无法让他查找第二个,请问怎么实现那个查找第二要查找的字符的方法,下面是我查找第一个的代码
private void button1_Click(object sender, EventArgs e)
{
this.richTextBox1.SelectionColor = Color.Red;
int a = this.richTextBox1.Text.IndexOf(textBox1.Text);
this.richTextBox1.SelectionStart = a;
this.richTextBox1.SelectionLength = this.textBox1.Text.Length;


}
...全文
73 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷猫 2008-07-16
  • 打赏
  • 举报
回复
结贴我知道我的理解有严重问题,也明白为什么我说了你们会听不懂,我错了
我给分+谢谢上面了
冷猫 2008-07-16
  • 打赏
  • 举报
回复
5楼的谢谢你,你的程序是将我上面的代码写得严密些,不至于很容易出现bug,
对不起,我的表达能力并非很好,我想实现的是我现在选中了文字,现在想把他们选中的那个状态取消掉,变成没有选中的状态,
就像记事本那样的,查找第一次,第一个文字就会被选中,查找2次,前一次选中状态就会被取消掉,而去选中第二个文字
请问实现如何
颤菊大师 2008-07-16
  • 打赏
  • 举报
回复
你这段代码好不完善哦。比如判断richtextbox1里是否有textbox1的值?比如当查找到最后一个查询时……

你要的,我也不懂。但VS2008运行通过。
        int 当前 = 0;
int 之前 = 0;
int 之前Length = 0;
int 位置 = 0;

private void button1_Click(object sender, EventArgs e)
{


if (this.richTextBox1.Text.Contains(this.textBox1.Text) == true)
{

richTextBox1.Focus();

当前 = this.richTextBox1.Text.IndexOf(this.textBox1.Text, 位置);
之前Length = this.textBox1.TextLength;

if (位置 != 0)
{
this.richTextBox1.SelectionStart = 之前;
this.richTextBox1.SelectionLength = 之前Length;
this.richTextBox1.SelectionColor = Color.Black;
}

this.richTextBox1.SelectionStart = 当前;
this.richTextBox1.SelectionLength = this.textBox1.TextLength;
this.richTextBox1.SelectionColor = Color.Red;
之前 = richTextBox1.SelectionStart;
位置 += 1;

}
冷猫 2008-07-16
  • 打赏
  • 举报
回复
我人品真的那么不好吗,没人回答……!^.^
冷猫 2008-07-16
  • 打赏
  • 举报
回复
有谁懂吗
冷猫 2008-07-16
  • 打赏
  • 举报
回复
1楼的,谢谢,等等结贴时给加分,还有点问题:
那怎么取消选中状态或者怎样验证他依然是被选中的,接上面的代码,
当被选中的时候字体显示红色,但当我在文本框中的随便点击,红色字体并没有退去,那是代表字体依然是被选中状态的意思吗?
如果是的话,怎么取消他的选中状态?
如果是由于上面的那句this.richTextBox1.SelectionColor = Color.Red;,而使字体选中状态被取消了,但依然不能是颜色改变回来的话,那又怎么验证字体是处于被选中还是没有被选中状态呢?
谢谢
宝_爸 2008-07-16
  • 打赏
  • 举报
回复
int current = 0;

private void button1_Click(object sender, EventArgs e)
{
this.richTextBox1.SelectionColor = Color.Red;
int a = this.richTextBox1.Text.IndexOf(textBox1.Text, current);
this.richTextBox1.SelectionStart = a;
this.richTextBox1.SelectionLength = this.textBox1.Text.Length;
current = a + 1;


}

111,089

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧