để cải tiến giải pháp làm việc của Abbas, hãy thử này:
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);
});
}
}
xử lý sự kiện này có thể được tái sử dụng với nhiều hộp, và nó không lấy đi khả năng của người dùng để đặt con trỏ vào giữa dữ liệu nhập vào (tức là không ép con trỏ vào vị trí 0 khi hộp không trống.
Tôi thấy điều này để bắt chước chặt chẽ hơn một hộp văn bản chuẩn. Chỉ có trục trặc còn lại (mà tôi có thể thấy) là sau khi sự kiện 'Enter', người dùng vẫn có thể chọn phần còn lại của dấu nhắc mặt nạ (trống) nếu xe giữ chuột và kéo đến cuối.
Ahh, vì vậy bạn cần sử dụng BeginInvoke! Tôi đã thử điều này mà không làm như vậy và cuối cùng không thấy bất kỳ thay đổi nào. +1 – Jeremy
Tại sao bạn cần sử dụng BeginInvoke? – Vaccano
@vaccano - nó làm việc cho tôi mà không có BeginInvoke –