Нисходящий текст в многострочном текстовом поле (Compact Framework, C #) - PullRequest
1 голос
/ 09 сентября 2010

Я пишу текст в многострочное текстовое поле, используя данные из последовательного порта.В настоящее время каждая новая строка записывается ниже предыдущей строки, поэтому в конечном итоге самые новые строки текста исчезают с экрана, и пользователь должен прокручивать страницу вниз, чтобы просмотреть их.Как я могу изменить код, чтобы он записывал каждую новую строку выше, а не ниже предыдущей строки текста?Я разрабатываю программу для устройств Windows Mobile 6 с использованием C # в VS2008.Я знаю, что это, вероятно, простое решение, но я новичок в C # и не могу понять, что я делаю.Заранее спасибо!

Обновление:

Это самое близкое к тому, что я пытался выполнить:

private void terminalText(object o, EventArgs e)
    {
        tbTerminal.Text += rawString;
        tbTerminal.Select(tbTerminal.TextLength, 0);
        tbTerminal.ScrollToCaret();
    }

Это не пишет следующую строку выше предыдущеголинии, как я и надеялся, но она автоматически фокусирует последний написанный текст, поэтому вам не нужно использовать полосу прокрутки для просмотра самых последних данных порта.Я ценю всю помощь!

Ответы [ 2 ]

1 голос
/ 09 сентября 2010

Вы всегда можете выбрать последний символ и затем прокрутить до каретки, я не слишком уверен, если это отличается от компактной структуры, но с обычным контролем текстового поля:

textBox.Select(textBox.TextLength, 0);
textBox.ScrollToCaret();
1 голос
/ 09 сентября 2010

Я думаю, что вы должны иметь возможность просто вставить новую строку текста перед всем предыдущим текстом следующим образом:

field.Text = receivedLine + "\r\n" + field.Text

Другой вариант - всегда добавлять текст в конец и простопрокрутите текстовое поле до конца:

        field.Text += receivedLine + "\r\n"
        var isNotEmpty = field.TextLength > 0;
        if (isNotEmpty)
        {
            field.Select(field.TextLength - 1, 0);
            field.ScrollToCaret();
        }

Это хорошо для разумного количества текста, получаемого с разумной частотой.Если вы начнете использовать большие куски текста или тонны обновлений, вам может потребоваться дальнейшая оптимизация.

...