Заменить и заменить все окна формы C # - PullRequest
2 голосов
/ 25 ноября 2011

У меня проблема с заменой найденного текста. Здесь мой код до сих пор пытался заменить и не может заставить его работать. Я знаю, что мне нужно использовать метод вставки, но не знаю, что туда вставить.

Вот мой код пока:

RichTextBox frm1TB = ((Form1)this.Owner).txtDisplay;

foundAt = frm1TB.Text.IndexOf(replacingRichText.Text);

if (foundAt == -1)
{
    MessageBox.Show("Not Found");
}
else
{
    frm1TB.Text = frm1TB.Text.Replace(searchText.Text, replacingRichText.Text);
    frm1TB.Text.Insert();
    frm1TB.SelectionStart = foundAt;
    frm1TB.SelectionLength = searchText.TextLength;
}

я получил 1 richtextbox в форме form1, а затем 2 текстовых поля в форме 2 1form, чтобы найти и найти текст, который называется searchText, и блок 2, чтобы заменить и заменить следующий вызываемый replacecingRIchText.

1 Ответ

1 голос
/ 25 ноября 2011

Возможно, вам придется заменить эти строки в обратном порядке, так как после замены строки ваши индексы и длины будут другими.

Кроме того, для вашего кода, я думаю, вам нужно изменить его на что-то вроде этого:

//frm1TB.Text = frm1TB.Text.Replace(searchText.Text, replacingRichText.Text);
//frm1TB.Text.Insert();

frm1TB.SelectionStart = foundAt;
frm1TB.SelectionLength = searchText.TextLength;
frm1TB.SelectedText = replacingRichText.Text;

Вот простой пример (рефакторинг по мере необходимости):

private void ReplaceText(string findText, string replaceText) {
  int index = frm1TB.Text.Length - 1;
  index = frm1TB.Text.LastIndexOf(findText, index);
  while (index > -1) {
    frm1TB.SelectionStart = index;
    frm1TB.SelectionLength = findText.Length;
    frm1TB.SelectedText = replaceText;
    index = frm1TB.Text.LastIndexOf(findText, index);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...