Como posicionar o cursor no início do MaskedTextBox ao editar uma data em C#?

Dirceu Vicente Caputi 40 Pontos de reputação
2025-01-18T10:56:15.6233333+00:00

Olá pessoal,

Estou enfrentando um problema com o controle MaskedTextBox. Quando o cursor entra no campo, quero que ele posicione automaticamente no início da data para que eu possa digitar diretamente. No entanto, da forma como estou implementando, o cursor está sendo posicionado no final da data preenchida.

Estou utilizando o seguinte código no evento Enter:

private void mskdata_Enter(object sender, EventArgs e)
{
    mskdata.SelectionStart = 0;
}

Esse comportamento funciona corretamente se o campo estiver vazio, permitindo que o cursor comece no início para digitar a data. Porém, quando o campo já está preenchido com uma data, o cursor continua parando no final.

Gostaria de que, mesmo com o campo já preenchido, o cursor iniciasse no começo, permitindo substituir a data sem a necessidade de apagar manualmente.

Alguém pode me ajudar a ajustar isso? Obrigado!

C#
C#
Uma linguagem de programação fortemente tipada e orientada a objetos com raízes na família C de linguagens e que inclui suporte para programação orientada a componentes.
26 perguntas
0 comentários Sem comentários
{count} votos

2 respostas

Classificar por: Mais útil
  1. Dio Xavier 2,045 Pontos de reputação
    2025-01-19T14:59:46.4233333+00:00

    Olá

    Bem vindo à Comunidade Miucrosoft Q&A

    Tudo bem, Dirceu? O problema está relacionado à forma como o controle MaskedTextBox lida com o comportamento de seleção e posicionamento do cursor ao entrar no campo, especialmente quando ele já contém um valor preenchido. Para resolver isso, você pode ajustar o evento Enter para forçar a seleção de todo o texto no campo. Isso garantirá que, ao interagir com o controle, o cursor seja posicionado no início.Para posicionar o cursor no início do MaskedTextBox, mesmo quando preenchido, utilize o seguinte código no evento Enter:


    `private void mskdata_Enter(object sender, EventArgs e) { mskdata.SelectionStart = 0; mskdata.SelectionLength = mskdata.Text.Length; }


    1. SelectionStart = 0: Posiciona o cursor no início.
    2. SelectionLength = mskdata.Text.Length: Seleciona todo o conteúdo para permitir substituição direta.

    Esse ajuste força o comportamento desejado ao entrar no controle, independentemente do estado do texto.

    0 comentários Sem comentários

  2. Dirceu Vicente Caputi 40 Pontos de reputação
    2025-01-19T15:32:08.8766667+00:00

    O comportamento, continua o mesmo, ao entrar na data, o cursor se posiciona no final da data, tenho que posicionar manualmente para o inicio da data, apagar tudo e digitar a nova data.

    private void mskdata_Enter(object sender, EventArgs e)

    {

    mskdata.SelectionStart = 0;

    mskdata.SelectionLength = mskdata.Text.Length;

    }


Sua resposta

As respostas podem ser marcadas como Respostas Aceitas pelo autor da pergunta, o que ajuda os usuários a saber a resposta que resolveu o problema do autor.