aby ulepszyć roztworu roboczego Abbasa, spróbuj tego:
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);
});
}
}
ten obsługi zdarzeń mogą być ponownie wykorzystane w wielu polach, a ona nie odbiera zdolność użytkownika, aby umieścić kursor w środku wprowadzonych danych (tzn. nie wymusza przesunięcia kursora do pozycji zerowej, gdy pudełko nie jest puste).
Uważam, że jest to dokładniejsze naśladowanie standardowego pola tekstowego. Pozostaje tylko usterka (widzę), że po zdarzeniu "Enter" użytkownik nadal może wybrać resztę (pustego) monitu, jeśli xe przytrzyma mysz i przeciągnie do końca.
Ahh, więc musisz użyć BeginInvoke! Próbowałem tego nie robiąc tego i skończyło się na tym, że nie widziałem żadnej zmiany. +1 – Jeremy
Dlaczego musisz używać BeginInvoke? – Vaccano
@vaccano - działa dla mnie bez BeginInvoke –