Изменить высоту текстового поля? - PullRequest
44 голосов
/ 02 мая 2011

Как изменить высоту текстового поля?

Ничего из нижеперечисленного не работает:

this.TextBox1.Size = new System.Drawing.Size(173, 100);

или

this.TextBox1.Size.Height = 100;

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

Ответы [ 21 ]

58 голосов
/ 26 июня 2013

Зайдите в yourForm.Designer.cs Прокрутите вниз до вашего текстового поля. Пример ниже для объекта textBox2. Добавьте это

this.textBox2.AutoSize = false;

и установите для него любой размер

this.textBox2.Size = new System.Drawing.Size(142, 27);

Будет работать как шарм - без установки многострочного значения на true, но только до тех пор, пока вы не измените какой-либо параметр в самом конструкторе (вам придется снова установить эти 2 строки). Я думаю, этот метод все еще лучше, чем мультилингирование. У меня было текстовое поле для псевдонима в моем приложении, и с многострочным, люди иногда случайно писали свои имена дважды, как Thomas \ nThomas (вы видели только одно в реальной строке текстового поля). При таком решении текст просто прячется влево после каждого символа, слишком длинного для ширины, поэтому пользователям намного безопаснее вводить ввод.

52 голосов
/ 02 мая 2011

Есть два способа сделать это:

  • Установить для свойства «multiline» текстового поля значение true, в этом случае вы не хотите этого делать;
  • Установитьбольший размер шрифта для текстового поля

Я считаю, что это единственный способ сделать это;больший размер шрифта должен автоматически соответствовать текстовому полю

25 голосов
/ 28 февраля 2013

Вы можете установить свойства MinimumSize и / или MaximumSize текстового поля. Это не влияет на размер сразу, но когда вы изменяете размер текстового поля в конструкторе форм, размер автоматически корректируется для соответствия ограничениям минимального / максимального размера. Это работает, даже если Multiline установлено на false и не зависит от размера шрифта.

8 голосов
/ 31 октября 2012

установить минимальный размер свойства

tb_01.MinimumSize = new Size(500, 300);

Это работает для меня.

5 голосов
/ 06 ноября 2014

Просто нашел отличный маленький трюк для установки пользовательской высоты для текстового поля.

В режиме конструктора установите minimumSize на любое значение, а затем полностью удалите параметр size.Это заставит дизайнер обновиться с новыми минимальными настройками!

3 голосов
/ 28 мая 2014
public partial class MyTextBox : TextBox
{
    [DefaultValue(false)]
    [Browsable(true)]
    public override bool AutoSize
    {
        get
        {
            return base.AutoSize;
        }
        set
        {
            base.AutoSize = value;
        }
    }

    public MyTextBox()
    {
        InitializeComponent();
        this.AutoSize = false;
    }
2 голосов
/ 04 мая 2011

Попробуйте следующее:)

        textBox1.Multiline = true;
        textBox1.Height = 100;
        textBox1.Width = 173;
1 голос
/ 11 апреля 2014

AutoSize, Minimum, Maximum не дает гибкости. Используйте многострочный режим, обрабатывайте событие ввода клавиши и подавляйте нажатие клавиши. Прекрасно работает.

textBox1.Multiline = true;

 private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                e.Handled = true;
                e.SuppressKeyPress = true;
            }
        }
1 голос
/ 11 мая 2011

Может быть, уже немного поздно.Но вы можете сделать это.

txtFoo.Multiline = true;
txtFoo.MinimumSize = new Size(someWith,someHeight);

Я решил это таким образом.

0 голосов
/ 01 июля 2019

Все, что вам нужно сделать, это включить мультилинию в окне свойств, указать желаемый размер в этом же окне, а затем в .cs после InitializeComponent, положить txtexample.Multiline = false;и поэтому мультилинии не включены, но размер текста соответствует вашему.

InitializeComponent();
txtEmail.Multiline = false;
txtPassword.Multiline = false;

enter image description here

enter image description here

enter image description here

...