Как я могу прокрутить к указанной строке в WinForms TextBox с помощью C#?

У меня была плохая установка Numpy. Решение состояло в том, чтобы повторно удалять Numpy как обычного пользователя и пользователя root до тех пор, пока не будет найдено больше установок, а затем переустановить:

pip3 uninstall numpy
sudo pip3 uninstall numpy

^ До тех пор, пока больше не останется, затем:

sudo pip3 install numpy
13
задан ghostJago 9 November 2011 в 20:05
поделиться

2 ответа

Вот как прокручивается выделение:

textBox.ScrollToCaret();

Чтобы прокрутить до указанной строки, вы можете перебрать свойство TextBox.Lines, суммировать их длины, чтобы найти начало указанной строки, а затем установить TextBox.SelectionStart для позиционирования каретки.

Что-то вроде этого (непроверенный код):

int position = 0;

for (int i = 0; i < lineToGoto; i++)
{
    position += textBox.Lines[i].Length;
}

textBox.SelectionStart = position;

textBox.ScrollToCaret();
28
ответ дан 1 December 2019 в 18:55
поделиться

Циклический ответ для нахождения правильного положения курсора имеет несколько проблем. Во-первых, для больших текстовых полей это медленно. Во-вторых, символы табуляции сбивают его с толку. Более прямой путь - использовать текст в нужной строке.

String textIWantShown = "Something on this line.";
int position = textBox.Text.IndexOf(textIWantShown);
textBox.SelectionStart = position;
textBox.ScrollToCaret();

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

0
ответ дан 1 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: