.NET - длинная строка в RichTextBox обернута после 3510 символов - PullRequest
7 голосов
/ 27 декабря 2010

У меня есть RichTextBox в программе WInForms, которая переносит любую строку длиной более 3510 символов. У меня WordWrap установлен на false, поэтому все строки под этой длиной обычно растягиваются без переноса. Чтобы обойти это, я обычно устанавливал для RightMargin большое значение, такое как 100 000, которое все еще работает, но теперь, когда я работаю в Windows 7, а не в XP, я получаю полосу прокрутки, которая прокручивается, как если бы текстовое поле имело линии такой большой длины, когда это не так.

Чтобы воспроизвести, просто создайте программу winforms с RichTextBox и Button. В событие нажатия кнопки введите следующее:

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 3511; i++)
            sb.Append('A');
        richTextBox1.Text = sb.ToString();

После того, как вы увидите обтекание, измените RightMargin текстового поля на 100000 и обратите внимание на полосу прокрутки, которая появляется еще до запуска программы (только на 7 и, вероятно, Vista). Строка больше не переносится, но я хочу, чтобы полоса прокрутки действовала только на текст в поле, а не на заранее заданную длину.

1 Ответ

7 голосов
/ 30 декабря 2010

Вы могли бы установить правильный маркер richTextBox на ширину строки?Как это

richTextBox1.RightMargin = 
TextRenderer.MeasureText(sb.ToString(), this.richTextBox1.Font).Width;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...