Tôi có một trường nhị phân trong cơ sở dữ liệu của mình khó mô tả trong giao diện người dùng bằng cách sử dụng một hộp kiểm "Is XXXX?" - type. Tôi muốn sử dụng một cặp nút radio (ví dụ: "Thực hiện theo cách Foo" và "Thực hiện theo cách Bar"), nhưng hiện tại tất cả các trường khác trên biểu mẫu của tôi đều được liên kết dữ liệu với đối tượng kinh doanh. Tôi cũng muốn kết nối dữ liệu các cặp nút radio với đối tượng nghiệp vụ, nhưng chưa đưa ra một cách tốt để làm điều đó. Tôi có thể gắn một trong các nút vào trường, sao cho trường được đặt "true" nếu nút được chọn, nhưng trong khi chọn nút khác thì bỏ chọn nút đầu tiên (nghĩa là, hai nút radio được ghép nối đúng cách), giá trị của trường không cập nhật để phản ánh điều này.Tôi làm cách nào để sử dụng dữ liệu kết nối với nút radio Windows Forms?
Tôi muốn để có thể nói
button1.DataBindings.Add(new Binding("checked", source, "useFoo"));
button2.DataBindings.Add(new Binding("checked", source, "!useFoo"));
nhưng tôi khá chắc chắn rằng sẽ ném khi nó chạy. Có cách nào dễ hơn không, hoặc tôi có nên suy nghĩ nhiều hơn về cách viết một hộp kiểm không? Tôi không muốn thêm các chức năng bổ sung để xử lý điều gì đó tầm thường này ...
ETA: Người nhận xét đã đề xuất xem xét một menu thả xuống (ComboBox). Tôi đã nghĩ về điều này, nhưng làm thế nào tôi sẽ kết nối dữ liệu đó với một trường boolean trong một cơ sở dữ liệu/thuộc tính trong một đối tượng nghiệp vụ? Nếu tôi liên kết SelectedItem với thuộc tính useFoo, cái gì sẽ đi vào bộ sưu tập Items? Tôi có phải thêm chỉ "True" và "False", hoặc bằng cách nào đó tôi có thể thêm một đối tượng cặp khóa/giá trị liên kết một mục được hiển thị ("Sử dụng Foo"/"Không sử dụng Foo") với giá trị boolean đằng sau nó? Tôi đang gặp khó khăn khi tìm tài liệu về điều này.
Về câu trả lời: giải pháp tôi vết thương bằng cách sử dụng liên quan đến sửa đổi các đối tượng kinh doanh - ý tưởng cơ bản là rất giống với một đăng bởi Gurge, nhưng tôi đến với nó một cách riêng biệt trước khi tôi đọc câu trả lời của mình. Tóm lại, tôi đã thêm một thuộc tính riêng biệt chỉ đơn giản trả về !useFoo
. Một nút radio được gắn với source.UseFoo
và nút còn lại được gắn với source.UseBar
(tên của thuộc tính mới). Điều quan trọng là phải đảm bảo tài sản mới có cả getters và setters, hoặc bạn sẽ kết thúc với hành vi thực sự kỳ quặc.
Và đừng quên thực hiện thay đổi này mỗi khi bạn chỉnh sửa Số liệu của mình! :-( – Mac