検索、置換の実用的な実装の仕方を教えて下さい。

if (Regex.IsMatch(((Form1)Owner).textBox1.Text,this.textBox1.Text))
{
 int i= ((Form1)Owner).textBox1.Text.IndexOf(this.textBox1.Text);
 if (i > -1)
 {
  //見つかった位置を選択開始の位置にする
  ((Form1)Owner).textBox1.SelectionStart = i;
  //探した文字列の長さを選択する文字列の長さにする
  ((Form1)Owner).textBox1.Select(i, this.textBox1.Text.Length);
 }
}

Form1が親で、メモ帳みたいな検索、置換をしたいんですが、
これだとビルドはできるんですが、検索ボタンを押すとフリーズします。