2009-02-26 2 views
4

Я добавляю новую строку журнала в объект WinForms TextBox, и это приводит к тому, что текстовое поле прокручивается вниз. Как я могу предотвратить это и сохранить свою текущую позицию? (короткий фрагмент кода поможет)Предотвращение прокрутки текстового поля при добавлении текста

ответ

0

SelectionStart по какой-то причине не сделал то, что я хочу. Он получил сброс до 0. Я нашел this post, который отвечает на то, что я хотел (чтобы использовать текстовое поле как журнал). Ответ TextBox.AppendText()

3

На самом деле, AppendText() не будет делать то, что вы хотите (попробуйте добавить больше текста и в какой-то момент все это идет наперекосяк)

Ответ на самом деле лежит в Win32 API , и к счастью для нас, товарищ SO пользователь уже реализовал это поведение отлично: Auto-scrolling text box uses more memory than expected

1

В C# вы можете попробовать <yourTextBox>.Text += "your new text"; вместо <yourTextBox>.AppendText("your new text");.

1

Правильный и простой ответ на заданный вопрос: SelectedText (чтение/запись). Вы можете присвоить ему текст, и текст будет отображаться в позиции каретки без необходимости прокрутки текстового поля. Вы можете использовать SelectionStart перед этим, чтобы переместить каретку в нужное место.

Смежные вопросы