Vì vậy, ý tưởng chung là bạn cần phải theo dõi những gì đang ở trong phạm vi. Có rất nhiều cách để đi về làm những gì bạn muốn làm, nhưng bất kỳ người trong số họ dựa vào các đối tượng tham chiếu lẫn nhau đúng cách theo cách bạn có thể chưa hoàn toàn hiểu đầy đủ. Đừng lo - mọi người đều phải làm việc này tại một thời điểm nào đó.
Lý do trình biên dịch bị khiếu nại khi bạn cố gắng làm cho thành viên đó tĩnh là vì bản thân nhãn không tĩnh. Được gắn với một cá thể của MainScreen, nó không có ý nghĩa trong một bối cảnh tĩnh, mà theo định nghĩa một phạm vi mà không có bất kỳ tham chiếu cố hữu nào đến một MainForm cụ thể.
Lớp Ngày của bạn, dĩ nhiên, cũng là một ngữ cảnh hoàn toàn khác, nhưng các thành viên không tĩnh của nó có quyền truy cập vào một phiên bản của Date. Không có bất kỳ con đường nào giữa hai bối cảnh này cho đến khi bạn tạo ra nó. Các tuyến đường tĩnh thực sự sẽ làm việc (tìm kiếm các mẫu Singleton: ý tưởng được rằng bạn lưu trữ trường hợp đầu tiên và duy nhất của một lớp tĩnh và tham khảo nó từ nơi khác) nhưng có lẽ không phải là thiết kế tốt. Các cách khác để làm điều này là bằng cách chuyển đến Date một thể hiện của MainScreen (tốt hơn là thông qua một giao diện) hoặc thậm chí là LabelDate. Tất cả những điều này có thể nhận được hai phần bạn cần cùng nhau để nói chuyện.
Tuy nhiên, tôi muốn đề xuất bạn nghĩ về vị trí trạng thái trò chơi của bạn đang được lưu trữ. Có phải trong thư viện hoặc hội đồng tiêu thụ? Nếu trước đây, bạn có thể muốn suy nghĩ về việc tạo ra một mô hình hoàn chỉnh GUIless của dữ liệu cần được lưu trữ và thao tác trong lớp thư viện và chỉ tiêu thụ dữ liệu sẵn sàng như trong ứng dụng chính. Cách khác là mô hình của bạn sống trong ứng dụng chính và chỉ cần gọi lại thư viện của bạn nếu cần. Trong trường hợp này, có lẽ bạn nên thanh toán ngay bây giờ để yêu cầu thư viện trả lời (hoặc nhiều nhất là lắng nghe các sự kiện trong thư viện) và KHÔNG mong đợi nó tự quay trở lại ứng dụng (cho dù nhận hay cung cấp thông tin).
Trong việc tìm ra cách thực hiện điều này, có thể bạn sẽ thấy các vấn đề về quản lý phạm vi của mình dễ xử lý hơn nhiều. Ngay cả một chút kiến trúc tốt cũng có thể đi một chặng đường dài.
Nhưng nếu điều này là một chút áp đảo, đừng nhấn mạnh quá nhiều. Nghe có vẻ như bạn đang làm điều này cho vui, đó là một cách tuyệt vời để học. Bạn sẽ đi lên chống lại các vấn đề như thế này và sẽ đánh vào một thiết kế tốt hay không tốt, nhưng dù bằng cách nào bạn cũng vật lộn với các khái niệm quan trọng và sẽ trở nên tốt hơn cho nó.
Nguồn
2013-05-10 04:57:44
bạn có thể sửa đổi các điều khiển từ một lớp khác nếu bạn có một đối tượng được khởi tạo trong lớp bộ điều khiển. – lexeRoy
Nhà thiết kế có tự động làm điều đó không? –
Bạn có thể hiển thị mã (hoặc mẫu mã đủ), nơi bạn gọi một biểu mẫu khác không? – lexeRoy