Для Windows Forms.RichTextBox, вставляющий текст
Я пытаюсь вставить текст в поле .rtf RichTextBox.
Я пробовал два метода. Когда я использую .Rtf.insert, ничего не происходит вообще.
Когда я редактирую строку .rtf на основе выбранных текстовых позиций, я либо добавляю тарабарщину к вещи, либо получаю сообщение об ошибке, указывающее, что формат файла недействителен. Мое лучшее предположение заключается в том, что строка .rtf находится в формате .rtf, а индекс выбора, который я использую, основан на простой текстовой строке, поэтому я вставляю текст в неправильном месте в строке .rtf и messing код RTF.
Но зная, в чем проблема (если я прав) не помог мне ее решить.
Есть ли способ получить .rtf.insert для правильной работы или есть способ перевести выбранные текстовые индексы в фактические текстовые позиции .rtf, чтобы что-то вроде кода ниже работало? Я предполагаю, что сам RichTextBox должен знать, как перевести один индекс в другой, потому что он может вставлять символы, когда пользователь набирает просто отлично.
Вот мой фрагмент кода. Точка кода заключается в том, чтобы вставить маркер в текст, который позже будет разобран и заменен на имя ученика. Будут и другие подобные коды. «codeLeader» и «codeEnder» - это просто строки, которые я использую для окружения кодов. В этом случае я использую «[*» и *] », чтобы указать, что есть код, который мне нужно будет анализировать, но я помещаю их в отдельные строки, чтобы я мог легко изменить его, если захочу. код синтаксического анализа, который отлично работает в расширенном тексте, просто вставляет текст в сам richTextBox. Другими словами, если бы я вручную вводил коды, это было бы очень хорошо. хлопотно для пользователя, так как некоторые из кодов будут использовать индексные номера.
private void studentFirstNameCode_Click(object sender, EventArgs e)
{
string ins = f1ref.codeLeader;
ins += "SNFirst" + f1ref.codeEnder;
int start = editorField.richTextBox1.SelectionStart;
if (start == -1) { start = 0; }
int end = start + editorField.richTextBox1.SelectionLength;
if (end == -1) { end = 0; }
string pre = editorField.richTextBox1.Rtf.Substring(0, start);
string post = editorField.richTextBox1.Rtf.Substring(end);
string newstring = pre + ins + post;
editorField.richTextBox1.Rtf = newstring;
// this also doesn't work. gives no result at all.
// editorField.richTextBox1.Rtf.Insert(start, newstring);
}
http://stackoverflow.com/questions/4795709/how-to-convert-a- string-to-rtf-in-c вам нужно понять, как преобразовать 'Strings в формат RTF' – MethodMan
Я не понимаю, зачем вам это нужно с RTF t доб. Не могли бы вы объяснить это? Кажется, что вы не заменяете текст каким-либо образом RTF, а просто текстовый – Steve
Мне нужно сделать это, потому что другие части текста отформатированы в rtf. Пользователь может редактировать текст, изменять цвет, менять размер шрифта, использовать маркеры и т. Д. В определенных местах я хочу, чтобы пользователь мог нажать кнопку вставить немного текста так же, как если бы он/она набрал его. Это все. – Popinjay