2008-11-19 24 views
5

Chào buổi sáng,Xác thực hộp văn bản, vấn đề chuyển đổi tiêu điểm

Tôi đang làm việc trên ứng dụng biểu mẫu C# đang sử dụng xác thực cho điều khiển. Vấn đề tôi gặp phải là khi người dùng nhấp vào một hộp văn bản và cố gắng nhấp vào, quá trình xác thực sẽ kích hoạt và tập trung lại kiểm soát, về cơ bản người dùng không thể nhấp vào kiểm soát đối với một điều khiển khác.

Kết quả mong muốn của tôi là có TẤT CẢ các điều khiển trên biểu mẫu xác thực khi người dùng nhấp vào nút gửi. Tôi muốn có biểu tượng errorProvider xuất hiện bên cạnh các trường bị lỗi và cho phép người dùng sửa chúng khi chúng thấy phù hợp.

Câu hỏi của tôi là, làm cách nào để thiết lập kiểm soát để cho phép người dùng nhấp vào bên ngoài của nó khi có lỗi. Tôi muốn người dùng có khả năng điền vào phần còn lại của biểu mẫu và tự quay lại lỗi thay vì bị buộc phải giải quyết ngay lập tức.

Cảm ơn bạn trước cho bất kỳ sự giúp đỡ và tư vấn,

Trả lời

2

Cách đơn giản nhất sẽ là chỉ để đặt tất cả các xác nhận trong các nút điều khiển Gửi, thay vì có nó trong các điều khiển.

-1

Có một thuộc tính (tôi nghĩ rằng đó là trên biểu mẫu) cho phép bạn di chuyển giữa các trường khi xác thực không thành công. Tôi không thể nhớ nó được gọi là gì, nhưng tôi nghĩ nó được đặt tên khá mô tả.

+0

Có thuộc tính CausesValidation, mà tôi tin rằng bạn đặt trên điều khiển đích - nhưng bạn cần đặt nó thành false cho * mọi thứ *. Đơn giản chỉ để tránh toàn bộ cơ chế, IMO. –

+0

Có thể đó là - để công bằng, chúng tôi thường thực hiện xác nhận riêng của mình về các lần nhấp nút ... –

2

chúng tôi có một chức năng xác nhận rằng trả bool nếu hình thức là hợp lệ và tập hợp tất cả các nhà cung cấp lỗi về hình thức:

trông như thế này:

private void OnSave() 
    { 
     if(ValidateData()) 
     { 
     //do save 
     } 
    } 

    public bool ValidateData() 
    { 
     errorProvider.Clear(); 
     bool valid = true; 
     if (this.defectStatusComboBox.SelectedIndex == -1) 
     { 
      errorProvider.SetError(defectStatusComboBox, "This is a required feild."); 
      valid = false; 
     } 
     //etc... 
     return valid; 
    } 
23

Các hình thức có tài sản AutoValidate, mà có thể được đặt để cho phép thay đổi tiêu điểm

+1

Bạn thưa bạn, là một học giả và một quý ông. Nó thậm chí không xảy ra với tôi để kiểm tra các thuộc tính mức biểu mẫu như tôi đã nghĩ nó sẽ là trình kiểm tra lỗi hoặc kiểm soát hợp lệ – Colton

5

Thuộc tính biểu mẫu là "Tự động xác thực" và ảnh hưởng đến tất cả các điều khiển trên biểu mẫu. Đó là một enum; đặt nó thành System.Windows.Forms.AutoValidate.EnableAllowFocusChange để cho phép người dùng thoát khỏi một điều khiển không xác nhận được, nhưng vẫn hiển thị biểu tượng lỗi cho phép người dùng kéo lên công cụ báo lỗi.

Thuộc tính kiểm soát "CausesValidation" là boolean. Nếu đó là sự thật thì điều khiển sẽ tăng sự kiện xác nhận kích hoạt trình cung cấp lỗi. Nó sai, mọi thứ bị bỏ qua, người dùng có thể thoát khỏi điều khiển, nhưng không có biểu tượng lỗi hoặc chú giải công cụ.

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