2014-02-04 4 views
3

У меня есть UserControl в моей заявке и TextBox установлен на нем недвижимости Docking.FillУвеличение TextBox Высота без увеличения размера шрифта

У меня есть ситуации, когда я динамически расти размер окна/Формы , в этом случае все мои элементы управления получают размер в соответствии с новым соотношением, но высота моего текстового поля не изменяется.

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

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

Было бы здорово, если бы любое тело помочь,

+0

Размер определяется UserControl. То, что вы сделали с ним в форме, которую вы не документировали. Установка свойства TextBox.Dock для одной строки для Fill просто неверно, TextBox теряет способность изменять размер, чтобы соответствовать шрифту. Это почти наверняка пошло не так, когда вы вывели свой класс из UserControl вместо TextBox. –

+1

UserControl, TextBox и Label на нем, Label for Shadow, когда TextBox length = 0, right.I есть функция, которая находит все элементы управления в UserControl или Form и добавляет их в список элементов управления, а затем меняю размер каждого и каждый элемент управления с заданным соотношением сторон для увеличения в Load_event формы/UserControl, справа. Проблема заключалась в том, что, хотя моя док-станция TextBox была заполнена, это не было переопределение, манипулируя ее фактором высоты *, поэтому я задал вопрос. Теперь я сделал это, просто используя TextBoxControl.AutoResize = false, а затем используя свойство Size. Это то, что я хотел сделать – DareDevil

ответ

2

вы можете сделать это в проектировщиком файле

this.textBox1.AutoSize = false; 
this.textBox1.Size = new System.Drawing.Size(100, 20); 

MSDN>TextBoxBase.AutoSize Property

+0

Мне нужно изменить этот размер во время выполнения, как я уже упоминал, Динамическое перераспределение элементов управления – DareDevil

+0

Да на 'AutoSize = false;', но вы хотите, чтобы размер был выполнен с DockStyle или что-то в этом роде. –

+0

@DareDevil - этот код очень нацелен на время выполнения. –

2

пользовательская функция, которая повторно размеров шрифта, с Aspect Соотношение и увеличение высоты TextBox.

public void IncerseHeightTextBox(TextBox tb, float Aspect_Ratio_Height) 
    { 
     tb.AutoSize = false; 
     tb.Width = (int)(tb.Width * (1.402+1.171)/2); //Width+height Ratio /2 
     tb.Font = new Font(tb.Font.FontFamily, tb.Font.Size * Aspect_Ratio_Height); 
     tb.Size = new Size(tb.Width, (int)(tb.Height * Aspect_Ratio_Height)); 
    } 

И вызов функции здесь:

IncerseHeightTextBox(tb2, (float)1.171); 
Смежные вопросы