RichTextBox в C# переносах слов с отключенными очень длинными строками текста и переносом слов - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь заставить RichTextBox перестать переносить длинные строки текста. Эти длинные строки текста могут быть очень длинными, иногда длиной в миллионы символов. Это встроенные PDF-файлы в HL7, которые иногда могут содержать более 100 страниц, создавая очень длинные строки. У меня отключена перенос слов, и я попытался настроить свойства MaxLength и RightMargin на 2147483647, а также попытался настроить его так, чтобы он соответствовал правильной длине текста. Я полагаю, что для обоих этих свойств по умолчанию уже установлено максимально допустимое значение, но я все равно попытался изменить их, чтобы посмотреть, какие результаты я получу. Я даже пробовал тестировать с более короткими строками, <150 000 символов, и он все еще переносит текст. Мой последний тест был ~ 135 000 символов, и я получил 12 строк упакованного кода. Я думаю, что это около 12 000 символов. Ниже приведена инициализация компонента, а затем вторая часть кода включает в себя множество вещей, которые я пробовал, но я прокомментировал этот момент, так как настройки по умолчанию кажутся лучшими из всего, что я пробовал. Я не смог найти ничего в документации по RichTextBox, где говорится, что в строке есть максимум символов или что-то в этом роде. Есть ли способ сделать очень длинные строки текста, чтобы не переносить? </p>

            this.richTxtHL7.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        this.richTxtHL7.Location = new System.Drawing.Point(12, 40);
        this.richTxtHL7.Name = "richTxtHL7";
        this.richTxtHL7.Size = new System.Drawing.Size(995, 401);
        this.richTxtHL7.TabIndex = 0;
        this.richTxtHL7.Text = "";
        this.richTxtHL7.WordWrap = false;
        this.richTxtHL7.Click += new System.EventHandler(this.richTxtHL7_Click);
        this.richTxtHL7.TextChanged += new System.EventHandler(this.richTxtHL7_TextChanged);
        this.richTxtHL7.KeyUp += new System.Windows.Forms.KeyEventHandler(this.richTxtHL7_CursorMoved);

            int maxCharacters = txtManip.getMaxLineCount(ref richTxtHL7);

        //MessageBox.Show(maxCharacters.ToString());
        richTxtHL7.SuspendLayout();
        //richTxtHL7.RightMargin = maxCharacters+2000;
        //richTxtHL7.RightMargin = int.MaxValue - 1000;
        //richTxtHL7.MaxLength = maxCharacters + 2000;
        //richTxtHL7.MaxLength = int.MaxValue - 1000;
        //richTxtHL7.RightMargin = 2147483647;
        //richTxtHL7.MaxLength = 2147483647;
        richTxtHL7.Text = richTxtHL7.Text;
        richTxtHL7.Text += "\n WordWrap=" + richTxtHL7.WordWrap.ToString()
                        + "\n RightMargin=" + richTxtHL7.RightMargin.ToString()
                        +"\n MaxLenght=" + richTxtHL7.MaxLength.ToString();
        richTxtHL7.ResumeLayout();

1 Ответ

0 голосов
/ 29 апреля 2020

Если это WinForms, я полагаю, что правое поле RichTextBox определено как Int32, и если ненулевое значение фактически приведет к длине строки.

Попробуйте установить для правого поля значение 0.

...