#c# #wpf #richtextbox
#c# #wpf #richtextbox
Вопрос:
Я хочу удалить пустые / ненужные пробелы и возврат каретки из моего RichTextBox
или TextRange
. Ниже приведен код, который я пробовал. Однако, хотя я могу удалить пустые пробелы, но в то же время форматирование тоже теряется.
Я понимаю, что в тот момент, когда я устанавливаю textRange.Text
форматирование, оно теряется.
Я не знаю, как двигаться дальше с этим.
string findword = findWord.Text;
string replaceword = replaceText.Text;
TextRange textRange = LoadXamlPackage(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
string[] lines = textRange.Text.Trim().Split('r');
for (int i = 0; i < lines.Count(); i )
{
if (lines[i].Contains(findword) amp;amp; replaceword == string.Empty)
{
lines[i] = "";
}
}
textRange.Text = string.Join(" ", lines);
Ответ №1:
строка findword = findWord.Text; строка replaceword = ReplaceText.Text;
TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
string[] lines = textRange.Text.Trim().Split('r');
for (int i = 0; i < lines.Count(); i )
{
if (lines[i].Contains(findword) amp;amp; replaceword == string.Empty)
{
lines[i] = "";
}
}
//textRange.Text = string.Join("", lines);
string rtf = string.Empty;
MemoryStream objmemoryStream = new MemoryStream();
textRange.Save(objmemoryStream, DataFormats.Rtf);
rtf = System.Text.ASCIIEncoding.Default.GetString(objmemoryStream.ToArray());
rtf = rtf.Replace(findword, replaceword);
MemoryStream objmemoryStream1 = new MemoryStream(System.Text.ASCIIEncoding.Default.GetBytes(rtf));
rtfTestResult.SelectAll();
rtfTestResult.Selection.Load(objmemoryStream1, DataFormats.Rtf);
Когда я раскомментирую нижеприведенную строку, форматирование полностью теряется —
TextRange.Текст = строка.Объединение («», строки);