2008-11-14 41 views
5

Đây là một chút kỳ lạ, nhưng tôi đã phải vật lộn trong vài giờ và tôi không thể hiểu điều gì đang xảy ra.Không thể thoát ra khỏi danh sách thả xuống Winforms danh sách dữ liệu

Tôi đã tự hỏi liệu có ai khác đã gặp phải sự cố này hay không và có thể giải thích được. Tôi đang xây dựng một ứng dụng Winforms đơn giản và cố gắng sử dụng nhiều bộ điều khiển được tích hợp sẵn.

Về cơ bản, tôi có biểu mẫu có điều khiển người dùng và một số trường chụp dữ liệu. 3 trong số các trường là danh sách thả xuống và trên điều khiển người dùng, tôi có một điều khiển bindingSource liên kết trực tiếp với một lớp Sản phẩm.

Khi chạy, tôi cung cấp một phiên bản của lớp Sản phẩm cho BindingSource và lớp có chứa thuộc tính ProductType. Để đơn giản, tôi cũng đã thêm List<ProductType> ProductTypes vào Lớp sản phẩm tự tải khi được truy vấn, có nghĩa là tôi chỉ có thể sử dụng cùng một bindingSource và chọn ProductTypes Thành viên dữ liệu làm Nguồn dữ liệu cho danh sách thả xuống.

Khi chạy biểu mẫu, danh sách liên kết hoàn hảo và tôi có thể thấy tất cả các loại sản phẩm được liệt kê và tôi có thể chọn một loại và tab hoặc nhấp vào trường tiếp theo. Nhưng rõ ràng giá trị được chọn sẽ không ràng buộc bởi vì tôi đã không chọn bất kỳ bindings-SelectedValue nào cho trình đơn thả xuống, chỉ một nguồn dữ liệu. Ngay sau khi tôi đảm bảo rằng trình đơn thả xuống sửa đổi cá thể của Sản phẩm bằng cách liên kết với Bindings-SelectedValue, sau đó chạy biểu mẫu, danh sách vẫn được điền hoàn toàn và tôi có thể tab qua các điều khiển miễn là tôi không tạo vùng chọn từ menu thả xuống. Nếu tôi thực hiện lựa chọn từ menu thả xuống thì trình đơn thả xuống giữ tiêu điểm. Tôi không thể tab ra cho tình yêu hay tiền bạc và thậm chí không thể nhấp vào nút hủy bỏ trên biểu mẫu, nút đóng trên cùng bên phải là nút duy nhất tôi có thể bấm vào đó hoạt động và tôi không thể bấm vào bất kỳ lĩnh vực khác hoặc thả xuống. Điều này ảnh hưởng đến cả ba danh sách thả xuống ngay sau khi lựa chọn được thực hiện.

Bất kỳ ai có bất kỳ ý tưởng nào tôi đang thiếu?

Tôi đã thử thay đổi một vài điều và có một số thành công bằng cách cho các giá trị thả xuống một chuỗi [] thay vì một thành viên của một đối tượng. Điều đó dường như làm việc, nhưng đánh bại đối tượng sử dụng databinding phải không?

Bất kỳ trợ giúp nào được đánh giá cao!

Trả lời

8

Chỉ cần đoán ở đây, bởi vì tôi không có thời gian để thiết lập thử nghiệm và xác nhận ngay bây giờ, nhưng bạn có đang thực hiện bất kỳ xác thực nào không? Tôi dường như nhớ rằng các điều khiển ràng buộc dữ liệu sẽ không cho phép bạn rời khỏi nếu nội dung không xác thực. Ngay cả khi bạn không rõ ràng, hãy thử đặt CausesValidation thành False để xem liệu có bất kỳ loại xác thực nào đang diễn ra đằng sau hậu trường hay không, điều đó có thể ít nhất là gợi ý cho bạn.

+0

Rất cám ơn Tom - không thể tin rằng điều đó thật đơn giản! Goes để hiển thị những gì sẽ xảy ra khi bạn không bao gồm kiểm tra xác nhận bởi vì nó là một ứng dụng thử nghiệm ;-) – RobertTheGrey

+0

Chúng ta có thể bắt lỗi xác nhận đó không? Điều gì sẽ xảy ra? – Lamar

0

Đối với danh sách thả xuống Infragisticst (có thể không đúng đối với các trình đơn thả xuống khác): Nếu bạn đặt "LimitToList" thành true, bạn có thể bị kẹt trong danh sách thả xuống mà bạn không thể thoát ra mà không nhận ra. Sử dụng ItemNotInList thậm chí để kích hoạt một thông báo cảnh báo.

1

Cảm ơn bạn đã nhập thông tin này, đã giúp tôi thu hút sự chú ý của mình.

Trong trường hợp của tôi, nó chỉ ra rằng một ngoại lệ đã được ném vào một trong EventHadlers cho sự kiện ComboBox.Validating của tôi. Thật khó để theo dõi, bởi vì IDE không cho tôi thấy ngoại lệ đó. Tôi đã có thể sửa đổi hành vi Ngoại lệ (trong trình đơn gỡ rối) và cho phép tôi hiển thị bất kỳ InvalidOperationException nào đã bị ném và sau đó tôi có thể theo dõi nó.

Như Tom đã đề xuất, tắt CuasesValidation là vé để tìm ra.

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