Вставка строк текста у курсора в текстовом поле - PullRequest
0 голосов
/ 11 февраля 2012

, поэтому я работаю над основной программой для блокнота, разработанной для помощи веб-дизайнерам.У меня есть список различных блоков кода, которые можно вставить в редактор, но у меня не получается вставить их так, как я хочу.По сути, я хотел бы иметь возможность щелкать между двумя строками (или словами, где бы то ни было) в текстовом редакторе и вставлять эти блоки там, где будет мигающий курсор.

Вот мой текущий код длякогда выбран один из параметров вставки:

public void getCodeBlock(string selection)
{
    string[] codeBlocks = System.IO.File.ReadAllLines(@"blocks\" + selection + ".txt");
    foreach (string codeBlock in codeBlocks)
    {
        int cursorPosition = richTextBox1.SelectionStart;
        string insertText = codeBlock + Environment.NewLine;
        richTextBox1.Text = richTextBox1.Text.Insert(cursorPosition, insertText);
        cursorPosition = cursorPosition + insertText.Length;
    }
}

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

Ответы [ 2 ]

0 голосов
/ 11 февраля 2012

Я действительно не могу понять, что должен делать ваш код.

Я мало работал с RichTextBox, но, если вы хотите вставить какой-либо текст в текущей позиции, просто выполните richTextBox1.SelectedText = insertText.(Обратите внимание, что это заменит выделенный текст, если таковой имеется.)

Вы можете использовать richTextBox1.SelectionStart и richTextBox1.SelectionLength для изменения текущей позиции / выбора.

0 голосов
/ 11 февраля 2012

Именно эта строка вызывает проблему:

cursorPosition = cursorPosition + insertText.Length;

Попробуйте вместо этого:

richTextBox1.SelectionStart = cursorPosition + insertText.Length -1;

Позиция выбора сбрасывается в 0 при изменении свойства TextrichTextBox1.cursorPosition - это ваша локальная переменная, которая в следующий раз примет новое значение в цикле.

...