Автоматическая подгонка TextBox под длину вводимого текста

      Данная инструкция поможет вам подогнать размер TextBox под ширину находящегося в нем текста. Создайте проект Windows Form и добавьте компонент TextBox.
Добавьте компонент Timer на форму.
      Выберете добавленный компонент Timer, сделайте клик правой клавишей по нему и выберете из появившемся контекстного меню, пункт «Свойства» (1). Выберете свойство «Enabled» и выставьте значение True (2). Данное свойство активирует компонент, при запуске программы. Перейдите в события компонента (3).
      У данного компонента всего одно событие, происходящее по истечению заданного временного интервала. Сделайте по нему двойной клик, левой клавишей мыши.
Вы перейдете в автоматически созданный метод timer1_Tick.
Добавьте в него следующий код:
//Инкапсулируем поверхность рисования GDI+. Этот класс нельзя унаследовать.
Graphics g = Graphics.FromHwnd(this.Handle);
//берем присвоенный текст и текущий фон
SizeF f = g.MeasureString(textBox1.Text, textBox1.Font); 
//Задаем ширину по тексту
textBox1.Width = (int)(f.Width);
      Так же в данном способе есть недочеты, если в компоненте нет изначально заданного текста, то после запуска текстовое поле будет иметь нулевую длину и вы не сможете ввести текст. В методе Form1() после инициализации компонентов (InitializeComponent();) добавьте строчку кода:
textBox1.Text = "123456789";
      Запустите приложение, нажав на клавиатуре клавишу F5. Теперь по мере ввода текста, компонент будет растягиваться на ширину текста.
      Реализуем второй вариант. Перейдите в конструктор формы. Выберете компонент TextBox и сделайте клик левой клавиши мыши по нему. В появившемся контекстном меню выберете пункт «Свойства».
      После открытия панели свойств компонента, перейдите в его события и найдите TextChanged. Данное событие возникает, когда в компоненте происходит изменение свойства Text. Сделайте двойной клик левой клавишей мыши по данному свойству.
Перейдя в листинг формы, скопируйте код из таймера в новое событие textBox1_TextChanged.
      Перед запуском программы, в свойстве Enabled таймера выставьте False. Запустите приложение, нажав на клавиатуре клавишу F5. Если вы сделали все правильно, то получите такой же результат работы, как и при работе с таймером. 
      На ваше рассмотрение было предложено два варианта реализации подгонки размера TextBox под текст расположенный в нем.

Ссылка для скачивания примера: Яндекс.Диск


Комментариев нет:

Отправить комментарий

Большая просьба, не писать в комментариях всякую ерунду не по теме!