2009-02-20 55 views

Trả lời

95
private void NumericUpDown1_Enter(object sender, EventArgs e) 
{ 
    NumericUpDown1.Select(0, NumericUpDown1.Text.Length); 
} 

(Lưu ý rằng thuộc tính Text được giấu trong Intellisense, nhưng nó ở đó)

+10

@Jon: Darn intellisense: -/Cuộc gọi tốt với thuộc tính Văn bản. –

+5

Tôi chỉ cố gắng thực hiện điều này trong quá trình xây dựng biểu mẫu (đặt trọng tâm thành NumericUpDown cụ thể và chọn tất cả văn bản của nó). Tôi đã phải gọi 'Select()' AND 'Select (0, NumericUpDown1.Text.Length);', đầu tiên để đặt tiêu điểm và thứ hai để chọn văn bản. Vì vậy, một lưu ý cho bất kỳ ai khác đến đây tìm cách để làm những gì tôi đang làm: Bạn phải thực hiện cả hai cuộc gọi đó để có được kết quả mong muốn, mặc dù cả hai đều được đặt tên giống nhau (tôi cứ chờ cuộc gọi với 'Select (start, length)' để đặt tiêu điểm như 'Select()' đã làm) –

+0

"nếu bạn tập trung điều khiển bằng cách sử dụng phím tab, mã này sẽ hoạt động tốt nhưng nếu bạn tập trung bằng một lần nhấp, mặc dù Tôi đoán là mã này được gọi trước khi một số mã khung nội bộ đặt con trỏ đặt lại lựa chọn. Để bỏ qua điều này, bạn có thể đặt cùng mã này trong trình xử lý sự kiện nhấp chuột ", 'n0n4m3' http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/28354bc2-3903-4be4-9c2c-3249319b59fd – PUG

2

Tôi tạo ra một phương pháp khuyến nông để thực hiện điều này:

VB:

<Extension()> 
Public Sub SelectAll(myNumericUpDown As NumericUpDown) 
    myNumericUpDown.Select(0, myNumericUpDown.Text.Length) 
End Sub 

C#:

public static void SelectAll(this NumericUpDown numericUpDown) 
    numericUpDown.Select(0, myNumericUpDown.Text.Length) 
End Sub 
-1

Hãy thử

myNumericUpDown.Select(0, myNumericUpDown.Value.ToString().Length); 
+0

Bạn có thể thêm bất kỳ làm rõ nào về lý do tại sao nó hoạt động, những phần khác nhau của điều này làm gì? –

+0

Điều này sẽ thất bại nếu bạn có một số thập phân và giá trị không có phần (ví dụ: 99,00) giá trị sẽ là 99 do đó độ dài của giá trị sẽ là 2 – Ahmed

4

tôi đang tìm kiếm xung quanh tôi đã có cùng một vấn đề và điều này Làm việc cho tôi, đầu tiên chọn Item và thứ hai chọn Text, hy vọng nó giúp trong tương lai

myNumericUpDown.Select(); 
myNumericUpDown.Select(0, myNumericUpDown.Value.ToString().Length); 
+0

Đây là những gì tôi đang cân nhắc trước khi tôi nhận ra rằng NumericUpDown.Text không tồn tại, bạn chỉ cần không nhận IntelliSense để hiển thị nó cho bạn, bạn thậm chí có thể làm cho nó cố gắng để tự động hoàn thành bạn TextAlign. "Văn bản không ảnh hưởng đến sự xuất hiện của điều khiển NumericUpDown, do đó, nó được ẩn trong trình thiết kế và từ IntelliSense." -Microsoft Tôi cũng thử nghiệm nhập giá trị với giao diện .Text vì tự kỷ và nó hoạt động như mong đợi, ném ngoại lệ cho các giá trị không phải số và thay thế những gì bạn nhập với giá trị tối đa và tối thiểu nếu bạn vượt quá chúng. – user2163234

7

tôi muốn để thêm vào điều này cho những người tương lai đã tìm kiếm Tab và Nhấp.

Jon B câu trả lời hoạt động hoàn hảo cho Tab nhưng tôi cần phải sửa đổi để bao gồm nhấp

Dưới đây sẽ chọn văn bản nếu bạn tab hoặc nhấp vào. Nếu bạn bấm và bạn nhập vào ô sau đó nó sẽ chọn văn bản . Nếu bạn đã tập trung vào hộp thì nhấp chuột sẽ làm những gì bình thường.

bool selectByMouse = false; 

    private void quickBoxs_Enter(object sender, EventArgs e) 
    { 
     NumericUpDown curBox = sender as NumericUpDown; 
     curBox.Select(); 
     curBox.Select(0, curBox.Text.Length); 
     if (MouseButtons == MouseButtons.Left) 
     { 
      selectByMouse = true; 
     } 
    } 

    private void quickBoxs_MouseDown(object sender, MouseEventArgs e) 
    { 
     NumericUpDown curBox = sender as NumericUpDown; 
     if (selectByMouse) 
     { 
      curBox.Select(0, curBox.Text.Length); 
      selectByMouse = false; 
     } 
    } 

Bạn có thể sử dụng tính năng này cho nhiều điều khiển UpDown. Chỉ cần đặt các sự kiện Enter và MouseDown

-1

Tôi đã có nhiều hộp số đếm ngược và muốn đạt được điều này cho tất cả. Tôi đã tạo:

private void num_Enter(object sender, EventArgs e) 
{ 
    NumericUpDown box = sender as NumericUpDown; 
    box.Select(); 
    box.Select(0, num_Shortage.Value.ToString().Length); 
} 

Sau đó, bằng cách liên kết chức năng này với ô Enter Event for each (mà tôi không làm), mục tiêu của tôi đã đạt được. Đã cho tôi một thời gian để tìm ra như tôi là một người mới bắt đầu. Hy vọng điều này sẽ giúp người khác ra ngoài

+0

đây thực sự là một bản sao của câu trả lời được chấp nhận –

+0

@AidanRyan Trên thực tế, vì câu trả lời này sử dụng 'người gửi' thay vì mục tiêu đối tượng cố định, nó được cho là tốt hơn câu trả lời được chấp nhận. – bartonjs

+0

Câu trả lời cho câu hỏi gốc và câu hỏi chưa được hỏi. Cách xử lý sự kiện phổ biến trên các điều khiển là một mối quan tâm khác, bất kể việc chọn tất cả văn bản hoặc bất kỳ thứ gì khác bạn có thể muốn thực hiện với sự kiện. Thực sự nó chỉ thêm tiếng ồn. –

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