none
Textbox que aumenta à medida que se vai digitando RRS feed

  • Pergunta

  • Gostaria de saber como faço isso, seja no microsoft blend ou dentro visual studio C# 2012, preciso de uma caixa de texto redimensionável, à medida que o usuário vai digitando, ela vai aumentando conforme a necessidade, preciso disso urgentemente, qualquer ajuda é muito bem vinda, obrigado!
    terça-feira, 17 de julho de 2012 12:02

Respostas

  • Olá Sandro,

    Com xaml isso é facinho, vamos lá:

    Xaml:

    <TextBox x:Name="MyTextBox" TextChanged="TextBox_TextChanged_1"  />

    Code-behind:

    private void TextBox_TextChanged_1(object sender, TextChangedEventArgs e) {
    	if(MyTextBox.Text.Length == 0) return;
    	Rect rect = MyTextBox.GetRectFromCharacterIndex(MyTextBox.Text.Length-1, true);
    	MyTextBox.Width = rect.Right + 80;
    }

    O GetRectFromCharacterIndex nos retorna um retângulo que envolve o último caractere do texto (lenght-1).

    Depois é só setar o Width do TextBox com o valor do lado direito (mais longe) do retângulo, mais um valor para cobrir o tamanho do controle textblock. Você pode mudar esse "80" para ver que número fica melhor pra você, ou usar a mesma estratégia para calcular o tamanho do textbox inteiro. Só tome cuidado com a recursão.

    Espero que ajude, abc!




    - André Carlucci - Way2 Technology - twitter/andrecarlucci - andrecarlucci.com

    quarta-feira, 1 de agosto de 2012 14:35