Hình ảnh dưới đây cho biết cách mã của tôi hoạt động. Khi tôi nhấn button2, hộp danh sách được cập nhật, nhưng không phải khi tôi nhấn button1. Tại sao?Hộp danh sách Winforms không cập nhật khi thay đổi dữ liệu bị ràng buộc
pseudo code http://i44.tinypic.com/mj69oj.gif
Sự cố có liên quan đến luồng không? Nếu có, tôi nên thêm cuộc gọi vào đâu (Bắt đầu) Gọi?
Một điều thú vị cần lưu ý là nếu tôi lần đầu tiên nhấn button1 và sau đó button2 dữ liệu được tạo ra bởi nút button1 được hiển thị khi tôi nhấp vào button2. Vì vậy, có vẻ như dữ liệu do doFoo tạo ra được đệm ở đâu đó và sau đó được đẩy vào hộp danh sách khi tôi nhấn button2.
EDIT:
Tôi đã thử thêm AddNumber vào mã hình thức, và thêm một cuộc gọi đến Gọi khi listBox1.InvokeRequired trả về true. Điều này giải quyết vấn đề, nhưng không phải là thiết kế đẹp nhất. Tôi không muốn GUI phải "lo lắng" về cách thêm các mục vào danh sách là một phần của mô hình.
Làm cách nào để giữ logic đằng sau việc thêm vào danh sách bên trong danh sách lớp, trong khi vẫn cập nhật gui khi danh sách thay đổi?
EDIT 2:
Bây giờ chúng ta đã xác nhận rằng đây là một vấn đề luồng Tôi đã cập nhật hình ảnh để phản ánh chặt chẽ hơn việc thiết kế các mã thực tế tôi đang làm việc trên.
Trong khi đề xuất của Lucero vẫn giải quyết được vấn đề, tôi đã hy vọng một điều gì đó không yêu cầu biểu mẫu biết bất cứ điều gì về dll hoặc CDllWrapper.
Mô hình
(ListBoxDataBindingSource vv) nên biết gì cả về quan điểm (listboxes, nút, nhãn vv)
Tôi hiểu vấn đề là gì, bây giờ chúng tôi chỉ cần đưa ra một giải pháp tốt :) Tôi đang cố thiết kế mẫu này theo mẫu MVC, vì vậy hãy để ListBoxDa taBindingSource (một phần của Model) biết về một điều khiển (một phần của View) thường được xem là thực hành không tốt. – Tobbe
Vâng, nó không thực sự biết về kiểm soát, nhưng chỉ cần biết nóng để sắp xếp các cuộc gọi thêm vào các chủ đề chính xác. Bạn có thể làm cho lớp marshaling của riêng bạn biết về điều khiển và được chuyển vào danh sách, để khía cạnh này được ẩn đi đúng cách. – Lucero
(* @ Tobbe: * Có thể [câu trả lời này] (http://stackoverflow.com/questions/3381536/winforms-data-binding-to-business-objects-in-a-multi-threaded-scenario-without-in/3381685 # 3381685) cho một trong những câu hỏi trước đây của tôi - [Winforms dữ liệu ràng buộc với các đối tượng kinh doanh trong một kịch bản đa luồng mà không có InvokeRequired?] (Http://stackoverflow.com/q/3381536/240733) - sẽ áp dụng ở đây.) – stakx