给RichTextBox添加查找画面

如何C#给RichTextBox添加查找画面:
  */
  //★★★★★★★★★案例分析:★★★★★★★★★★★★★★★★★★★★★★★★★★★
  //环境:C#
  //1 我有一个RichTextBox控件,里面有很多的内容,我想按下按钮(ctrl+F)弹出一个查找画面
  //2 在查找画面中我输入一个值进行查找,可以对父页面中RichTextBox中的内容进行查询
  //3 对查找出来的内容,以特殊的颜色标示出来
  //★★★★★★★★★实现方法:★★★★★★★★★★★★★★★★★★★★★★★★★★★
  //第一步:在richTextBox1_KeyDown事件中加上一下代码:
  if (e.Control && e.KeyCode == Keys.F)
  {
  //选中所有的RichTextBox的内容
  this.richTextBox1.SelectAll();
  //改变RichTextBox的选中的字体颜色
  this.richTextBox1.SelectionColor = Color.Black;
  //改变RichTextBox的选中的字体的背景颜色
  this.richTextBox1.SelectionBackColor = Color.Moccasin;
  //选中richTextBox从0开始的0个字符
  this.richTextBox1.Select(0, 0);
  //把滚动条回滚到焦点所在位置
  this.richTextBox1.ScrollToCaret();
  //弹出查找画面
  frmLookFor frm = new frmLookFor();
  frm.Show(this);
  }
  //第二步:在查找画面中
  //变量定义和对象实例化
  public static string strKey = "";
  private int index = 0;
  private int k = 1;
  strKey = this.textBox1.Text;
  if (strKey == "")
  {
  return;
  }
  //フォ�`ム初期化
  frmRulerChk frm1 = (frmRulerChk)this.Owner;//为了在子窗体中得到主窗体的东西
  //指定の文字列を�仕�
  int m = System.Text.RegularExpressions.Regex.Matches(((RichTextBox)frm1.Controls["richTextBox1"]).Text, strKey, System.Text.RegularExpressions.RegexOptions.IgnoreCase).Count;
  if (((RichTextBox)frm1.Controls["richTextBox1"]).Text != "")
  {
  if (k <= m)
  {
  while ((index = ((RichTextBox)frm1.Controls["richTextBox1"]).Find(strKey, index, RichTextBoxFinds.None)) >= 0)
  {
  //选�kした文字列の色
  ((RichTextBox)frm1.Controls["richTextBox1"]).SelectionColor = Color.Red;
  //选�kした文字列のBackColor
  ((RichTextBox)frm1.Controls["richTextBox1"]).SelectionBackColor = Color.Blue;
  //フォ�`カス移动
  ((RichTextBox)frm1.Controls["richTextBox1"]).Focus();
  //文字列选�k
  ((RichTextBox)frm1.Controls["richTextBox1"]).Select(index, 5);
  //スクロ�`ルバ�`はフォ�`カスのところへ移动
  ((RichTextBox)frm1.Controls["richTextBox1"]).ScrollToCaret();
  index++;
  k++;
  if (k == m)
  {
  MessageBox.Show("�仕鳏慰�始位置に达しました", "注意", MessageBoxButtons.OK, MessageBoxIcon.Information);
  index = 0;
  k = 1;
  }
  return;
  }
  }
  }
  //★★如果要实现查询画面只弹出一个并且最小化的把状态改为正常状态:★★★★★★★★
  //步骤一中代码改为:
  //实例化要打开的窗体
  public static frmLookFor frmlook = null;
  if (e.Control && e.KeyCode == Keys.F)
  {
  if (frmRulerChk.frmlook == null)
  {
  this.richTextBox1.SelectAll();
  this.richTextBox1.SelectionColor = Color.Black;
  this.richTextBox1.SelectionBackColor = Color.Moccasin;
  this.richTextBox1.Select(0, 0);
  this.richTextBox1.ScrollToCaret();
  frmRulerChk.frmlook = new frmLookFor();
  frmRulerChk.frmlook.Show(this);
  }
  else
  {
  try
  {
  if (frmRulerChk.frmlook.WindowState == FormWindowState.Minimized)
  {
  frmRulerChk.frmlook.WindowState = FormWindowState.Normal;
  }
  frmRulerChk.frmlook.Activate();
  }
  catch
  {
  this.richTextBox1.SelectAll();
  this.richTextBox1.SelectionColor = Color.Black;
  this.richTextBox1.SelectionBackColor = Color.Moccasin;
  this.richTextBox1.Select(0, 0);
  this.richTextBox1.ScrollToCaret();
  frmLookFor frm = new frmLookFor();
  frm.Show(this);
  }
  }
  }
  //★★如果想要改运行的窗体在任务栏中不显示图标:★★★★★★★★
  //更改属性:ShowInTaskbar = false;
  //注:在查找画面关闭的时候一定要加上这句代码:
  frmRulerChk.frmlook = null;

本文出自 “乐成的技术笔记” 博客,谢绝转载!

你可能感兴趣的:(职场,休闲,richTextBox,画面,乐成)