2014-06-13 15 views
7

Tôi đang sử dụng hộp văn bản có mặt nạ có mặt nạ số điện thoại và nếu bạn nhấp vào điều khiển, vị trí con trỏ được đặt ở bất kỳ nơi nào chuột được nhấp. Tôi muốn ghi đè vị trí mặc định của con trỏ sao cho:Làm thế nào để định vị con trỏ ở cuối văn bản trên hộp văn bản được che dấu?

  1. Nếu không nhập văn bản, con trỏ được đặt ở đầu hộp văn bản.

  2. Nếu văn bản đã được nhập và kiểm soát được nhấp vào, định vị con trỏ sau số đầu vào cuối cùng.

Có cách nào để thực hiện việc này không?

EDIT

Một số người đã đề nghị sử dụng mã này:

PhoneNumber.SelectionStart = PhoneNumber.Text.Length; 

Nhưng điều này sẽ không làm việc kể từ khi literals mặt nạ đang nằm trong số lượng chiều dài, mà vít lên vị trí con trỏ. Tôi biết rằng bạn có thể đặt thuộc tính textmaskformat để loại trừ các chữ, nhưng số đếm vẫn không đúng bởi vì các chữ cái vẫn được hiển thị.

+2

Bạn nên đề cập đến trong các câu hỏi của mình về các sự cố bạn gặp phải cho đến thời điểm này. –

Trả lời

0

Đây là một câu hỏi khá cũ bằng bây giờ, nhưng tôi đi qua nó hôm nay trong khi cố gắng thực hiện như nhau trong ứng dụng winforms của tôi.

Câu trả lời được chấp nhận đã hoạt động nhưng sẽ định vị con trỏ tại vị trí 0, ngay cả khi có văn bản được che dấu ở đầu: XYZ______.

tôi đã có thể giải quyết vấn đề này bằng cách sử dụng phương pháp FindUnassignedEditPositionFrom() trên MaskedTextProvider:

private void TextBox_Click(object sender, EventArgs e) 
{ 
    int startPos = this.textBox.MaskedTextProvider.FindUnassignedEditPositionFrom(this.textBox.MaskedTextProvider.LastAssignedPosition + 1, true); 
    this.textBox.Select(startPos, 0);    
} 

này sử dụng cùng LastAssignedPosition là câu trả lời được chấp nhận, nhưng chiếm thêm cho bất kỳ văn bản không thể chỉnh sửa có thể xuất hiện ngay từ đầu - trong ngắn hạn, điều này sẽ di chuyển con trỏ đến vị trí có thể chỉnh sửa đầu tiên có sẵn.

Các vấn đề liên quan