Tôi đã chạy vào một lỗi rất cụ thể với điều khiển DateTimePicker trong Windows Forms. Kiểm soát có định dạng tùy chỉnh (MM-YYYY -> 01/2010) - tháng/năm của thẻ tín dụng. Hôm nay là ngày 29 tháng 9. Nếu người dùng chọn điều khiển và sử dụng bàn phím để đặt tháng đến tháng 2, điều khiển sẽ ném một ArgumentOutOfRangeException. Không có ngày như ngày 29 tháng 2 năm 2009. Điều này cũng sẽ xảy ra vào những ngày là ngày 31, di chuyển đến một tháng chỉ với 30 ngày. Bạn có thể dễ dàng xử lý việc này bằng cách đặt ngày thành '01', tuy nhiên người dùng có thể nhấp vào lịch để chọn theo cách thủ công vào ngày 30 và sau đó sử dụng bàn phím để chọn Tháng Hai.Làm cách nào tôi có thể xử lý cửa sổ biểu mẫu datetimepicker ArgumentOutOfRangeException?
Làm cách nào để ngoại lệ này có thể bị bắt, khi đầu vào xảy ra trên GUI và không thực sự trong mã? Chúng tôi đã cố gắng nắm bắt nó trong sự kiện TextChanged, nhưng điều đó đã quá muộn. Ngoại lệ đã được ném.
Có cách nào để xử lý trường hợp này không? Sẽ tốt hơn nếu điều khiển tự động thay đổi ngày thành giá trị cao nhất trong tháng đó. Hoặc ít nhất là nếu nó vượt qua ngoại lệ thông qua một sự kiện.
(Tôi biết rằng chúng tôi có thể bẫy sự kiện KeyPressed và đặt ngày thành 01 lần, nhưng điều này cảm thấy 'hacky').
Tôi chỉ kiểm tra nếu nó xảy ra khi ngày được hiển thị cho người dùng, và nó không. Vì vậy, bạn nói đúng, IS kiểm soát sai được sử dụng. Nhưng mục đích của tôi khi đặt câu hỏi là tìm hiểu xem liệu có thể xử lý các ngoại lệ xảy ra theo những cách tương tự không? Nếu một ngoại lệ được tạo ra từ tương tác UI của một điều khiển. –