2011-06-19 40 views
7

Tôi có một số mã kiểm tra và đảm bảo rằng khi người dùng nhập vào trường, một số nguyên từ 1 - 10 phải được nhập vào.C# - Xác nhận TextBox

Mặc dù nếu người dùng lấy trọng tâm của trường, dữ liệu "xấu" (chẳng hạn như "fdgfdg") vẫn còn trong trường. Vì vậy, một số có thể chứng minh làm thế nào khi tiêu điểm bị mất trên trường, nếu dữ liệu không hợp lệ, giá trị mặc định sẽ được nhập thay vào đó, ví dụ: 5

private void textBox4_TextChanged(object sender, EventArgs e) 
     { 
      try 
      { 
       int numberEntered = int.Parse(textBox4.Text); 
       if (numberEntered < 1 || numberEntered > 10) 
       { 
        MessageBox.Show("You must enter a number between 1 and 10"); 
       } 
      } 
      catch (FormatException) 
      { 

       MessageBox.Show("You need to enter an integer"); 
      } 
     } 
+1

@Gats: Đây là ứng dụng winforms máy tính để bàn ... –

+0

Đây là winforms không một trang web. –

+1

@Gats: Ngay cả khi đó là ứng dụng web, xác thực phía máy chủ là bắt buộc. Xác thực phía máy khách phải là một bổ sung tiện lợi để xác thực phía máy chủ. –

Trả lời

14

Có một số sự kiện mà bạn có thể sử dụng ở đây, Leave, LostFocusValidating có thảo luận nhiều các sự kiện khác nhau trên MSDN here.

Theo một số kịch bản các LeaveLostFocus sẽ không sa thải vì vậy tốt nhất để sử dụng trong trường hợp của bạn là sự kiện Validating:

textBox1.Validating += new CancelEventHandler(textBox1_Validating); 


    void textBox1_Validating(object sender, CancelEventArgs e) 
    { 
     int numberEntered; 

     if (int.TryParse(textBox1.Text, out numberEntered)) 
     { 
      if (numberEntered < 1 || numberEntered > 10) 
      { 
       MessageBox.Show("You have to enter a number between 1 and 10"); 
       textBox1.Text = 5.ToString(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("You need to enter an integer"); 
      textBox1.Text = 5.ToString(); 
     } 
    } 
+0

Cảm ơn bạn, đó là một ví dụ tuyệt vời – Jay

0

nếu bạn là tay lăn xác như bạn làm ở đây, tất cả các bạn cần làm là để thiết lập giá trị mặc định sau khi bạn MessageBox.Show()

trong winforms chuẩn mà tôi không nghĩ rằng bạn có bất kỳ hỗ trợ khuôn khổ để xác nhận, nhưng bạn có thể xem xét điều này: http://msdn.microsoft.com/en-us/library/ms951078.aspx để tìm cảm hứng để bạn không phân tán logic này suốt ứng dụng của bạn

+0

Tư duy sáng .. :) – Jay

0

hệ e sự kiện Leave trên điều khiển textbox để xác nhận và thiết lập giá trị mặc định

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