여러 개의 텍스트 상자가있는 Winforms FlowLayoutPanel이 있습니다. 텍스트 상자가 사용자의 입력에 따라 동적으로 너비를 변경할 수 있으므로 전체 입력이 항상 각 텍스트 상자에 표시 될 수 있습니까?Winforms : FlowLayoutPanel의 동적 텍스트 상자 너비
0
A
답변
2
텍스트 상자를 TextChanged 이벤트를 사용하여 텍스트를 측정하고 컨트롤의 너비를 설정할 수 있습니다. 당신은 너무 TextBox의 폭은 FlowLayoutPanel의 클라이언트 폭보다 넓게 안된다는 명백한 한계가있다
public Form1() {
InitializeComponent();
textBox1.MinimumSize = new Size(32, 0);
textBox2.MinimumSize = new Size(32, 0);
textBox3.MinimumSize = new Size(32, 0);
textBox1.TextChanged += textBox_TextChanged;
textBox2.TextChanged += textBox_TextChanged;
textBox3.TextChanged += textBox_TextChanged;
}
void textBox_TextChanged(object sender, EventArgs e) {
TextBox tb = sender as TextBox;
if (tb != null) {
tb.Width = TextRenderer.MeasureText(tb.Text, tb.Font, Size.Empty,
TextFormatFlags.TextBoxControl).Width + 8;
}
}
: 나는 최종 사용자가 실용적이 예에서 (32)의 최소 폭에 추가 그것을 설명해야합니다. 폭에 대한 + 8
등 패딩 및 테두리의 여분의 공간을 차지하기 위해 단지 퍼지 숫자입니다
1
의 경우 텍스트 상자 GET의 넓은 단지
TextBox.MultiLine to true 그렇지 true로 설정 FlowLayoutPanel 년대 후 레이아웃 패널과 비교하여 텍스트 상자의 높이를 확인하는 것을 잊지 마십시오.