c# - (如何)使用 NSMenuItem 将文本从 <editor> 复制到剪贴板

标签 c# macos xamarin xamarin.mac

我有一个关于 MacOS 的 C# 应用程序的问题。

我有以下代码(在 MainClass 中):

NSMenuItem copyMenuItem = new NSMenuItem(title: "Copy", charCode: "c", handler: delegate
{
     //Has to be code       
});

在 page.xaml 中我有一个编辑器标签:

<Editor x:Name="editField" 
          Text="Some Text" 
          Margin="0" 
          Grid.Row="1" 
          Grid.Column="1"/>

所以,我的问题是:

当他们使用相同的解决方案时,我如何使用代码的第一部分将编辑器中的文本复制(到剪贴板)? (NSMenuItem).

最佳答案

由于基于 macOS Xamarin.Forms 的应用程序没有主菜单(通常通过 Storyboard/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 选择器作为剪贴板。

关于c# - (如何)使用 NSMenuItem 将文本从 <editor> 复制到剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46407060/

相关文章:

c# - 网络浏览器打印

c# - 等待启动下一个方法或线程,直到后台线程在使用 C# .Net 的 Windows 窗体应用程序中结束

c# - 异步返回集合的各种方式(具有 C# 7 特性)

mysql - Mac OSX 10.2 上的 MariaDB 10.1.22 - 在 my.cnf 中启用常规查询日志

objective-c - XCode 构建结果 : why is it so amazingly complex even for a hello world console app?

ios - MT5202 : Native linking failed - Xamarin. iOS 7 - 外部附件

c# - ASP.NET 和 JavaScript 错误

c++ - 我可以升级 Xcode 以支持更新版本的 GCC 来学习 C++0x 吗?

c# - 当我的 Xamarin 应用程序仅在 Release模式下中断时,我该如何调试它?

xamarin - 在 Xamarin 中集成 WebRTC