Подтвердить что ты не робот

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

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

Ни одна из ниже не работает:

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

или

this.TextBox1.Size.Height = 100;

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

this.textBox2.AutoSize = false;

и установите его размер как угодно

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

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

Ответ 3

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

Ответ 4

задайте свойство минимального размера

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

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

Ответ 5

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

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

Ответ 6

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;
    }

Ответ 7

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

        textBox1.Multiline = true;
        textBox1.Height = 100;
        textBox1.Width = 173;

Ответ 8

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

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

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

Ответ 9

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

textBox1.Multiline = true;

 private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                e.Handled = true;
                e.SuppressKeyPress = true;
            }
        }

Ответ 10

для меня лучший подход - удалить границу текстового поля и поместить его внутри панели, которая может быть настроена по своему усмотрению.

Ответ 11

Следующий код, добавленный в ваш конструктор после вызова InitializeComponent(), позволит программно установить ваше текстовое поле на нужную высоту без а) изменения свойства Multiline, b) для жесткого кодирования высоты или c) код, созданный конструктором. Он по-прежнему не обязательно такой же чистый или приятный, как это делается в пользовательском элементе управления, но он довольно прост и прочен:

if (txtbox.BorderStyle == BorderStyle.None)
{
    txtbox.BorderStyle = BorderStyle.FixedSingle;
    var heightWithBorder = txtbox.ClientRectangle.Height;
    txtbox.BorderStyle = BorderStyle.None;
    txtbox.AutoSize = false;
    txtbox.Height = heightWithBorder;
}

Я решил сделать его более чистым и простым в использовании, поставив его в статический класс и сделав его методом расширения в TextBox:

public static class TextBoxExtensions
{
    public static void CorrectHeight(this TextBox txtbox)
    {
        if (txtbox.BorderStyle == BorderStyle.None)
        {
            txtbox.BorderStyle = BorderStyle.FixedSingle;
            var heightWithBorder = txtbox.ClientRectangle.Height;
            txtbox.BorderStyle = BorderStyle.None;
            txtbox.AutoSize = false;
            txtbox.Height = heightWithBorder;
        }
    }
}

Ответ 12

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

Вы можете сделать это еще более естественным, используя следующие методы

    private void textBox1_Enter(object sender, EventArgs e)
    {

        panelTextBox.BorderStyle = BorderStyle.FixedSingle;
    }

    private void textBox1_Leave(object sender, EventArgs e)
    {
        panelTextBox.BorderStyle = BorderStyle.None;
    }

Ответ 13

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

Первоначально OP, вероятно, использовала более старую версию .net, поскольку версия 4 автоматически настраивает высоту текстового поля, чтобы соответствовать шрифту, но не имеет значения comboboxes и textboxes, что является совершенно другой проблемой, но привлекло меня здесь.

Это проблема, с которой я столкнулся при размещении текстовых полей рядом со списками в форме. Это немного раздражает, потому что кто хочет, чтобы два элемента управления были бок о бок с разной высотой? Или разные шрифты, чтобы заставить высоты? Постарайся Microsoft, это должно быть просто!

Я использую .net framework 4 в VS2012, и для меня это было самым простым решением.

В форме load event (или в любом месте до тех пор, пока он запускается после InitializeComponent): textbox.AutoSize = false Затем установите высоту в соответствии с тем, что вы хотите. Для меня я хотел, чтобы мои текстовые поля и комбинированные поля были одинаковой высоты, поэтому textbox.height = combobox.height помогло.

Примечания:

1) Дизайнер не будет затронут, поэтому вам потребуется начать проект, чтобы увидеть конечный результат, поэтому могут быть некоторые пробные версии и ошибки.

2) Выровняйте вершины ваших списков и текстовых полей, если вы хотите, чтобы они были правильно выровнены после изменения размера, потому что текстовые поля будут уменьшаться.

Ответ 14

Шаги:

  • Установите текстовые поля в многострочные
  • Изменить высоту
  • Измените размер шрифта. (поэтому он вписывается в большие текстовые поля)
  • Установите текстовые поля обратно в не-многострочные

Ответ 15

Это то, что отлично работало для меня, поскольку все, что я хотел сделать, это установить высоту текстового поля. Свойство доступно только для чтения, а свойство находится в классе Unit, поэтому вы не можете просто установить его. Поэтому я просто создал новое подразделение, и конструктор позволяет мне установить высоту, а затем установить текстовое поле для этого устройства.

Unit height = txtTextBox.Height;
double oldHeight = height.Value;
double newHeight = height.Value + 20; //Added 20 pixels
Unit newHeightUnit = new Unit(newHeight);
txtTextBox.Height = newHeightUnit;

Ответ 16

Самый простой способ сделать это

1.. щелкните правой кнопкой мыши на текстовом поле

2.. перейти к собственности

установить Multiline = True

Теперь сделано это автоматически изменит размер TextBox

и вы также можете настроить это

Ответ 17

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

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

enter image description here

enter image description here

enter image description here

Ответ 18

Вы также можете изменить вы также можете изменить MinimumSize

Ответ 19

Таким образом, после того, как у меня возникла та же проблема с невозможностью отрегулировать высоту в текстовом поле, настройка ширины - это хорошо, но высота никогда не корректировалась с помощью приведенных выше предложений (по крайней мере, для меня), и я наконец смог сделать это. Как упоминалось выше, проблема, по-видимому, связана с настройкой размера шрифта по умолчанию в моем текстовом поле и поведением автоматического изменения размера текстового поля вокруг него. Размер шрифта по умолчанию был крошечный. Следовательно, попытка форсировать высоту или даже отключить авторазмер не смогла решить проблему для меня.

Установите свойства шрифта в соответствии с размером, который вам нравится, и тогда изменение высоты будет автоматически соответствовать размеру шрифта. Вы все еще можете вручную установить ширину текстового поля. Ниже приведен фрагмент, который я добавил, который работал для меня.

    $textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(60,300)
$textBox.Size = New-Object System.Drawing.Size(600,80)
$textBox.Font = New-Object System.Drawing.Font("Times New Roman",18,[System.Drawing.FontStyle]::Regular)
$textBox.Form.Font = $textbox.Font

Обратите внимание, что значение высоты в '$ textBox.Size = New-Object System.Drawing.Size(600, 80)' игнорируется, и размер шрифта фактически контролирует высоту текстового поля, автоматически изменяя размер шрифта.

Ответ 20

Я думаю, что это должно сработать.

TextBox1.Height = 100;

Ответ 21

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

Этот парень объясняет, как выполняется вычисление, и как вы можете установить его в TextBox, чтобы получить желаемую высоту.

Ура!