C # WinForm Автоматическое изменение размера текстового поля - PullRequest
0 голосов
/ 07 апреля 2019

Я использую WinForms и пытаюсь передать текст из одного текстового поля1 в другое текстовое поле2. Дело в том, что textbox2 должен автоматически изменять размер в зависимости от содержимого textbox1. Мне удалось сделать это с одним исключением. Когда вы создаете новые строки в textbox1, это делает вещь. Но когда вы пишете с пробелами, но не создаете новую строку, это не меняет размер моего textbox2. Это изменяет размер, но не полностью по какой-то причине

Это то, что я пытался сделать.

    private void PassTextFunction()
    {
        const int X_Main = 95;
        const int Y_Main = 60;
        Size size = TextRenderer.MeasureText(TextBox1.Text, TextBox1.Font);
        TextBox2.Text.ClientSize = new Size(size.Width + X_Main, size.Height + Y_Main);
        int nInterval = 10;
        string res = String.Concat(TextBox2.Text.Select((c, i) => i > 0 && (i % nInterval) == 0 ? c.ToString() + Environment.NewLine : c.ToString()));
        TextBox2.Text = TextBox1.Text.ToString();
    }

Так что, когда я делаю линии, все размеры меняются совершенно нормально. Вот пример: https://imgur.com/zxd5aCd

Но когда я пишу без следующей строки, просто набираю текст, остальная часть текста скрывается ниже, а textbox2 по какой-то причине не меняет свой размер полностью. Вот пример: https://imgur.com/ftbiP55

Кто-нибудь может мне помочь с фиксированным кодом, пожалуйста?

1 Ответ

0 голосов
/ 07 апреля 2019

Посмотрите на перегрузку, принимающую string, Font, Size и TextFormatFlags.

Для параметра типа Size используйте ClientSize текстового поля (или новый Size с шириной текстового поля) (и, возможно, добавьте X_Main и Y_Main - I ' я не уверен, для чего они) и, по крайней мере, включите TextFormatFlags.WordBreak для TextFormatFlags (и посмотрите на другие, если они тоже могут быть вам полезны).

...
Size size = TextRenderer.MeasureText(TextBox1.Text, TextBox2.Font, TextBox2.ClientSize, TextFormatFlags.WordBreak);
...
...