C# (如何)从<;编辑>;使用NSMenuItem复制到剪贴板
我有一个关于MacOS的C#应用程序的问题 我有以下代码(在MainClass中): 在page.xaml中,我有一个编辑器标签:C# (如何)从<;编辑>;使用NSMenuItem复制到剪贴板,c#,macos,xamarin,xamarin.mac,C#,Macos,Xamarin,Xamarin.mac,我有一个关于MacOS的C#应用程序的问题 我有以下代码(在MainClass中): 在page.xaml中,我有一个编辑器标签: <Editor x:Name="editField" Text="Some Text" Margin="0" Grid.Row="1" Grid.Column="1"/> 所以,我的问题是: 当他们使用相同的解决方案时,如何使用代码的第一部分复制编辑器中的文本(
<Editor x:Name="editField"
Text="Some Text"
Margin="0"
Grid.Row="1"
Grid.Column="1"/>
所以,我的问题是:
当他们使用相同的解决方案时,如何使用代码的第一部分复制编辑器中的文本(到剪贴板)?(NSMenuItem)。由于基于
macOS
Xamarin.Forms
”的应用程序没有主菜单(通常通过故事板/xib提供),因此需要构建整个菜单链:
var mainMenu = new NSMenu();
var appMenuItem = new NSMenuItem();
mainMenu.AddItem(appMenuItem);
var editMenuItem = new NSMenuItem();
mainMenu.AddItem(editMenuItem);
var editSubMenu = new NSMenu("Edit");
editSubMenu.SetSubmenu(editSubMenu, editMenuItem);
var cutMenuItem = new NSMenuItem("Cut", new Selector("cut:"), "x");
editSubMenu.AddItem(cutMenuItem);
var copyMenuItem = new NSMenuItem("Copy", new Selector("copy:"), "c");
editSubMenu.AddItem(copyMenuItem);
var pasteMenuItem = new NSMenuItem("Paste", new Selector("paste:"), "v");
editSubMenu.AddItem(pasteMenuItem);
NSApplication.SharedApplication.MainMenu = mainMenu;
将其放入您的
AppDelegate
(构造函数或DidFinishLaunching
)中,您将拥有整个应用程序的剪切/复制/粘贴功能,因为NSMenuItem
项正在使用剪贴板的Cocoa选择器。非常感谢!这是可行的,我还必须使用ObjCRuntime添加在new Selector()
可以工作之前执行code>。但还是要感谢:)@RaymonJansen没问题,happyXamarin.Mac
coding
var mainMenu = new NSMenu();
var appMenuItem = new NSMenuItem();
mainMenu.AddItem(appMenuItem);
var editMenuItem = new NSMenuItem();
mainMenu.AddItem(editMenuItem);
var editSubMenu = new NSMenu("Edit");
editSubMenu.SetSubmenu(editSubMenu, editMenuItem);
var cutMenuItem = new NSMenuItem("Cut", new Selector("cut:"), "x");
editSubMenu.AddItem(cutMenuItem);
var copyMenuItem = new NSMenuItem("Copy", new Selector("copy:"), "c");
editSubMenu.AddItem(copyMenuItem);
var pasteMenuItem = new NSMenuItem("Paste", new Selector("paste:"), "v");
editSubMenu.AddItem(pasteMenuItem);
NSApplication.SharedApplication.MainMenu = mainMenu;