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
            [Login] => joenet
            [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ódigoprivate 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ódigoprivate 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ódigovoid 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ódigoif (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ódigoprivate 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.