В этом решении используется метод Click в MaskedTextBox, такой как Gman Cornflake; однако я счел необходимым разрешить пользователю щелкать внутри MaskedTextBox, когда он содержит данные и курсор остается там, где он есть.
В приведенном ниже примере отключаются запросы и литералы и оценивается длина данных в MaskedTextBox, а если оно равно 0, курсор помещается в начальную позицию; в противном случае он просто обходит код, который помещает курсор в начальную позицию.
Код написан на VB.NET 2017. Надеюсь, это поможет!
Private Sub MaskedTextBox1_Click(sender As Object, e As EventArgs) Handles MaskedTextBox1.Click
Me.MaskedTextBox1.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
If Me.MaskedTextBox1.Text.Length = 0 Then
MaskedTextBox1.Select(0, 0)
End If
Me.MaskedTextBox1.TextMaskFormat = MaskFormat.IncludePromptAndLiterals
End Sub