Как сделать TextBox растягивающимся?

186
21 декабря 2021, 14:20

использую .Net Framework (compact Edition) для мобильного приложения.

На форме есть TextBox, который должен растягиваться в случаях, когда строка превышает ширину элемента.

Параметры в дизайнере у элемента TextBox :

this.txbValue.Location = new System.Drawing.Point(6, 21);
this.txbValue.Multiline = true;
this.txbValue.Name = "txbValue";
this.txbValue.Size = new System.Drawing.Size(231, 22);

Растягивать я пробовал так:

private void txbValue_TextChanged(object sender, EventArgs e)
{
    UpdateValuesList();
    using (Graphics gr = ((TextBox)sender).CreateGraphics())
    {
        ((TextBox)sender).Height = (int)gr.MeasureString(((TextBox)sender).Text, Font).Height;
    }
}

Но это не сработало. Подскажите как правильно растягивать TextBox в случаях, если строка больше ширины элемента?

Answer 1

Ты меряешь и изменяешь ВЫСОТУ, а не ширину.

private void txbValue_TextChanged(object sender, EventArgs e)
{
    var sndr = (TextBox)sender;
    UpdateValuesList();
    using (Graphics gr = Graphics.FromImage(new Bitmap(1, 1)))
    {
        SizeF size = gr.MeasureString(sndr.Text, sndr.Font, GraphicsUnit.Point));
        sndr.Width = size.Width;
    }
}
READ ALSO
Перевод формата даты Excel в python datetime формат

Перевод формата даты Excel в python datetime формат

Работаю над задачей перевода формата даты ячейки Excel-я в python datetime форматНашел на английском stackoverflow подходящую реализацию перевода C# формата...

158
Решить пример 38^29 mod 91 на C#

Решить пример 38^29 mod 91 на C#

Пробовал сам сделать, но C# не может, такие большие числа обрабатывать правильноНа Python все ок работает

147
Можно ли применить к include() фильтры take() и skip()

Можно ли применить к include() фильтры take() и skip()

В принципе в названии вопрос ясен, есть список, у элемента списка есть еще список, из бд мне нужно получить ограниченное количество элементов...

100
Как ускорить парсинг JSON файла?

Как ускорить парсинг JSON файла?

Пишу парсер для steam инвентаря

200