Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 483484
            [titulo] => MaskedTextbox com máscara Oculta
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-06-24 11:52:37
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 232232
            [status] => A
            [isExample] => 
            [NomeUsuario] => Joel Rodrigues
            [Apelido] => 
            [Foto] => 232232_20161017163010.jpg
            [Conteudo] => Se aqui deu certo, aí também deve dar, basta que você ajuste para a data que deseja.

Obs.: não sei se isso é um requisito fundamental de seu sistema, mas eu não perderia tempo com isso. ) )

MaskedTextbox com máscara Oculta

Jair Souza
   - 16 jun 2014

Tem como ter um MaskedTextbox que só apareça a máscara quando for dado foco neste textbox ?

Post mais votado

Joel Rodrigues
   - 24 jun 2014

Se aqui deu certo, aí também deve dar, basta que você ajuste para a data que deseja.

Obs.: não sei se isso é um requisito fundamental de seu sistema, mas eu não perderia tempo com isso.

Jair Souza
   - 17 jun 2014


Citação:
Tem como ter um MaskedTextbox que só apareça a máscara quando for dado foco neste textbox ?


Como fazer isto em Windows Form C# ?

Clique na imagem para abrir em uma nova janela

Joel Rodrigues
   - 17 jun 2014

Rapaz, automaticamente não. Só tratando o evento Focus dele.

Jair Souza
   - 17 jun 2014

Como se faz isso ...Mask.Visible = false; ?

Jair Souza
   - 18 jun 2014

Alguma dica ?

Joel Rodrigues
   - 18 jun 2014

Fiz um pequeno exemplo aqui usando uma máscara padrão qualquer. Abaixo estão os eventos Enter e Leave do MaskedTextBox:

#Código

private void maskedTextBox1_Leave(object sender, EventArgs e)
{
    (sender as MaskedTextBox).BackColor = Color.White;
    if ((sender as MaskedTextBox).Text == "     -")
    {
        (sender as MaskedTextBox).Mask = "";                
    }
}

private void maskedTextBox1_Enter(object sender, EventArgs e)
{
    (sender as MaskedTextBox).BackColor = Color.LightGreen;            
    (sender as MaskedTextBox).Mask = "00000-9999";            
}

Joel Rodrigues
   - 18 jun 2014

Ah, explicando:

1) Usei "(sender as MaskedTextBox)" para que fique genérico, assim é possível ligar vários MaskedTextBoxes no mesmo evento e funcionará para todos.

2) Comparei o texto com " -" pois esse é o conteúdo do MaskedTextBox quando está com máscara, mas sem conteúdo digitado. Isso varia para cada máscara escolhida.

O resto acho que não tem mistério, né?

Jair Souza
   - 24 jun 2014

Bom dia, não deu nenhum erro, mas não funcionou...pesquisei e achei este método abaixo.
O primeiro mask a ocultar é de data ___/__/___ com esta linha de código no botão adicionar registro, oculta somente as underlines as barras continuam aparecendo " / / ".

#Código

private void BtnAdicionar_Click(object sender, EventArgs e)
         {
            dataNascMaskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;


         }

Joel Rodrigues
   - 24 jun 2014

É, eu sei, por isso nem sugeri essa possibilidade.

Jair Souza
   - 24 jun 2014

Com certeza não é fundamental, mas para meu conhecimento sim, agradeço pela sua ajuda.

Jair Souza
   - 24 jun 2014

Talvez este método que uso para alterar o backcolor dos textbox quando recebem o foco, esteja em conflito com o código que sugeriste e por isso não funcione o método de ocultar a máscara ??

#Código

private void CorFocus(Control.ControlCollection controls)
{
            foreach (Control control in controls)
            {
                if ((control is TextBox) || (control is ComboBox) || (control is MaskedTextBox))
                {
                    control.Enter += new EventHandler(controlFocus_Enter);
                    control.Leave += new EventHandler(controlFocus_Leave);
                }
                CorFocus(control.Controls);
            }
        }

        void controlFocus_Enter(object sender, EventArgs e)
        {
            if (nomeTextBox.ReadOnly == false)

                (sender as Control).BackColor = Color.FromArgb(254, 244, 220);
        }

        void controlFocus_Leave(object sender, EventArgs e)
        {
            if (nomeTextBox.ReadOnly == false)

                (sender as Control).BackColor = Color.White;
        }

Joel Rodrigues
   - 25 jun 2014

Talvez possa estar relacionado a isso sim. Experimente colocar um breakpoint no evento Enter que criou para tratar a máscara e veja se a execução para lá.

Jair Souza
   - 25 jun 2014

Fiz esta adaptação no código acima incluindo a sua dica no código que altera o backcolor quando em foco, nas propriedades tirei a mask e no código fiz assim, o enter funciona, mas o Leave não...

#Código

void controlFocus_Enter(object sender, EventArgs e)
        {
            if (nomeTextBox.ReadOnly == false)

                (sender as Control).BackColor = Color.FromArgb(254, 244, 220);

		   (sender as MaskedTextBox).Mask = "00/00/0000";
        }

        void controlFocus_Leave(object sender, EventArgs e)
        {
            if (nomeTextBox.ReadOnly == false)

                (sender as Control).BackColor = Color.White;
			
		   if ((sender as MaskedTextBox).Text == "    //")
    			{
        		(sender as MaskedTextBox).Mask = "";                
    			}
        }

Joel Rodrigues
   - 25 jun 2014

Tem um if estranho aí, talvez você precise generalizar também usando o sender:

#Código

if (nomeTextBox.ReadOnly == false)

Jair Souza
   - 25 jun 2014

Fiz a sua sugestão e não funcionou...tentei tratar no leave somente deste maskedtextbox como abaixo e tambem não funcionou.

Como deve ficar a mask dentro das aspas ? Acho que o problema está aí...

#Código

private void dataNascMaskedTextBox_Leave(object sender, EventArgs e)
        {
            if ((sender as MaskedTextBox).Text == "__/__/____")

            (sender as MaskedTextBox).Mask = "";
        }

Joel Rodrigues
   - 26 jun 2014

Você já depurou, conforme eu sugeri, e viu se esse código está sendo executado?

Jair Souza
   - 26 jun 2014

Depurei agora, mas...!!!

Clique na imagem para abrir em uma nova janela

Clique na imagem para abrir em uma nova janela

Joel Rodrigues
   - 27 jun 2014

Me parece que nesse caso o MaskedTextBox não está vazio, então não vai ocultar a máscara, pois é exatamente isso que o IF verifica.

Jair Souza
   - 28 jun 2014

O problema estava exatamente no if, pois o formato que se estava informando da máscara não estava correto.Então coloquei um ponto de interrupção(Break point) no if do evento leave e rodei o aplicativo, entrei no textbox e o evento Enter colocou a máscara certinho, sai do campo sem preencher, o break point parou o aplicativo, verifiquei o que ele tinha na
propriedade text e este valor coloquei no if.
Finalmente funcionando, valeu !

Clique na imagem para abrir em uma nova janela

Joel Rodrigues
   - 29 jun 2014

Opa, que bom.
Abraço e bons códigos.