Um die funktionierende Lösung von Abbas zu verbessern, versuchen Sie Folgendes:
private void ueTxtAny_Enter(object sender, EventArgs e)
{
//This method will prevent the cursor from being positioned in the middle
//of a textbox when the user clicks in it.
MaskedTextBox textBox = sender as MaskedTextBox;
if (textBox != null)
{
this.BeginInvoke((MethodInvoker)delegate()
{
int pos = textBox.SelectionStart;
if (pos > textBox.Text.Length)
pos = textBox.Text.Length;
textBox.Select(pos, 0);
});
}
}
Dieser Event-Handler kann für mehrere Felder wiederverwendet werden und nimmt dem Benutzer nicht die Möglichkeit, den Cursor in der Mitte der eingegebenen Daten zu positionieren (d.h. er zwingt den Cursor nicht in die Nullstellung, wenn das Feld nicht leer ist).
Ich finde, dass dies eher einem Standard-Textfeld ähnelt. Der einzige verbleibende Fehler (den ich sehen kann) ist, dass der Benutzer nach dem "Enter"-Ereignis immer noch in der Lage ist, den Rest der (leeren) Maske auszuwählen, wenn er die Maus gedrückt hält und bis zum Ende zieht.