c # Richtextbox переместить курсор в положение x, y


person CitizenStile    schedule 23.07.2011    source источник
comment
Что такое разделитель строк? Новая линия?   -  person NoviceProgrammer    schedule 23.07.2011
comment
\n должен быть новым разделителем строк.   -  person CitizenStile    schedule 23.07.2011
comment
Что касается похвалы joshhendo, это не совсем то же самое. Этот ответ был за позиционирование на старте. Я ищу позицию где-то в середине текста.   -  person CitizenStile    schedule 23.07.2011


Ответы (2)


Я не уверен, что так и должно быть, но это 1 способ:

private void SetCaretPosition(int rows, int col)
{
    int curPos = 0;
    if (richTextBox1.Lines.Length >= rows)
    {    
        for (int i = 0; i < rows - 1; ++i)
        {
           curPos += richTextBox1.Lines[i].Length + 1; //add 1 for the newline character
        }
        richTextBox1.SelectionStart = curPos + col; 
    }
    else
        richTextBox1.SelectionStart = richTextBox1.TextLength;
    richTextBox1.ScrollToCaret();             
}

Редактировать:

Я не знал, что вы также опубликовали правку. Вам нужно рассмотреть символ новой строки. 1, если это \n, 2, если это \r\n

person NoviceProgrammer    schedule 23.07.2011

проверьте метод SelectionStart. Вы можете использовать свойство SelectionStart элемента управления RichTextBox для «Получает или задает начальную точку текста, выбранного в текстовом поле».

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.aspx

Пример кода здесь:

http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.selectionstart.aspx

person Carlos Quintanilla    schedule 23.07.2011
comment
Несколько на правильном пути к тому, о чем я думал (пока лучший ответ). У меня есть идея, что может сработать. Я собираюсь поиграть с этим и некоторыми другими вещами и посмотреть, что я могу придумать. - person CitizenStile; 23.07.2011