2011-10-27 34 views
6

Tôi đang cố gắng thêm chương trình vào ứng dụng MonoMac của mình theo chương trình. Tôi đã mở MainMenu.xib và xóa tất cả NSMenuItem khỏi điều khiển MainMenu.Tạo NSMenuItems theo lập trình trong MonoMac

tôi thêm đoạn mã sau vào FinishedLaunching ghi đè tôi:

var fileMenuItem = new NSMenuItem("File"); 
var fileMenu = new NSMenu(); 

var fileNew = new NSMenuItem("New"); 
var fileOpen = new NSMenuItem("Open"); 
var fileSave = new NSMenuItem("Save"); 

fileMenu.AddItem(fileNew); 
fileMenu.AddItem(fileOpen); 
fileMenu.AddItem(fileSave); 

fileMenuItem.Menu = fileMenu; 

NSApplication.SharedApplication.MainMenu.AddItem(fileMenuItem); 

Nhưng nó không phải làm bất cứ điều gì.

Khi tôi thêm mã để MainWindowController.Initialize(), tôi nhận được một thất bại khẳng định "mục được đưa vào thực đơn đã là trong một menu"

Tôi đã porting mã được tìm thấy trong này SO trả lời: Creating NSMenu with NSMenuItems in it, programmatically?

Trả lời

5

Hóa ra tôi phải làm như sau:

fileMenuItem.Submenu = fileMenu; 

Thuộc tính menu phụ của NSMenuItem phải được đặt thành menu thực tế thay vì thuộc tính Menu.

+0

tác phẩm này, mặc dù bạn cũng nên đặt tiêu đề của tệpMenu.title = "Someting" nếu nó không phải là mục đầu tiên (luôn có tên ứng dụng) – PetrV