Tôi đang phát triển một Word Add-In với tab Ribbon của riêng nó. Hầu hết mã thực tế của tôi có chứa trong một số lớp Service được khởi tạo trong ThisAddIn_Startup và được gán cho các thuộc tính của đối tượng singleton ThisAddIn. Tôi cũng có một trình lắng nghe sự kiện lắng nghe các sự kiện clipboard mà tôi muốn hiển thị với phần còn lại của mã như một thuộc tính của cùng một đối tượng.Ribbon tùy chỉnh được tải trước ThisAddIn_Startup, nhưng tôi muốn khởi tạo một số thứ ở đó - giải pháp tốt nhất?
Sự cố mà tôi đang gặp phải là sự kiện Tải băng của tôi kích hoạt trước sự kiện Khởi động của ThisAddIn (mặc dù đối tượng đơn lẻ đã được khởi tạo và gán cho Globals.ThisAddIn). Trong trình xử lý sự kiện Load của Ribbon, tôi muốn cài đặt một trình xử lý trên trình lắng nghe đó và cũng sử dụng một trong các dịch vụ đó. Tôi không thể, mặc dù, bởi vì vào thời điểm này trong chương trình thực hiện họ là null.
Giải pháp tốt nhất cho vấn đề này là gì? Tôi chỉ có thể làm cho tất cả những điều này thành viên tĩnh của ThisAddIn và khởi tạo chúng trong một constructor tĩnh, nhưng điều đó có vẻ sai và cũng phá hủy toàn bộ điểm có một sự kiện Startup (hoặc một đối tượng singleton).
Thật kỳ lạ, ban đầu tôi không gặp phải vấn đề này khi Ribbon của tôi chỉ thêm các thành phần của nó vào tab Add-In tích hợp - sau đó sự kiện Load được kích hoạt sau khi khởi động.
(Lưu ý: Tôi đang làm tất cả điều này trong Visual Studio 2012 và sử dụng thiết kế Ribbon.)
Tôi thực sự không sử dụng câu trả lời được chấp nhận ở trên nữa. (Phản ứng SO thích hợp cho điều này là gì? Tôi có nên thêm một cái mới và di chuyển chấp nhận không?) Những gì tôi làm là chỉnh sửa hàm tạo trong Ribbon.Designer.cs để gọi phương thức "ManualInitialize". Mã này bao gồm mọi thứ không phụ thuộc vào ThisAddIn_Startup. Sau đó tôi thêm một phương thức khác trong Ribbon.cs "FinalStartup" được gọi bởi ThisAddIn_Startup có chứa mọi thứ mà * làm * phụ thuộc vào ThisAddIn_Startup. –
Tôi nghĩ bạn nên xóa câu trả lời được chấp nhận và để câu hỏi của bạn chưa được trả lời. Có thể ai đó sẽ tìm ra cách tốt hơn. – Malick