如何将 IAsyncQuickInfoSource 工具提示中的 WPF 文本框文本复制到剪贴板
How to copy text of a WPF textbox in an IAsyncQuickInfoSource tooltip to clipboard
我有一个 Visual Studio 扩展 (vsix),带有显示文本框 (WPF) 的快速信息工具提示 (IAsyncQuickInfoSource)。当您将鼠标悬停在关键字上时,它会显示一些有用的信息。文本框内容可选
我喜欢用Ctrl+C复制文本框的内容。但是,不是将文本框的内容复制到剪贴板,而是复制来自快速信息工具提示的文本缓冲区中的文本。
textbox is focusable. This minimal example project 显示了不良行为。
问题:如何将工具提示中文本框的文本复制到剪贴板。
要将文本复制到剪贴板,您可以使用 Clipboard
静态 class.
的 SetContent()
方法
快捷方式的问题有点复杂。主要原因是 VS 中的快捷方式在范围内工作,因此即使您将相同的 Ctrl + C
快捷方式定义为扩展中命令的快捷方式(例如,使用此处描述的方法 How to register key binding code on VSIX package installation),默认的编辑器复制命令将采用优先于你的,并将继续处理该快捷方式。因为您的快捷方式被认为是全局范围,并且编辑器在更具体的范围内具有相同的快捷方式。
要使其正常工作,您需要在工具 window 的范围内专门定义快捷方式。这样,当您的 window 获得焦点时,VS 将优先考虑您的工具 window 的范围,而不是编辑器因此调用您的快捷方式。
这个过程涉及几个步骤,您可以参考这个答案,看看一位开发人员是如何做到的
您可以考虑的替代方法是在您的工具中添加一个小按钮 window 来复制内容,而无需使用快捷方式。
我有一个 Visual Studio 扩展 (vsix),带有显示文本框 (WPF) 的快速信息工具提示 (IAsyncQuickInfoSource)。当您将鼠标悬停在关键字上时,它会显示一些有用的信息。文本框内容可选
我喜欢用Ctrl+C复制文本框的内容。但是,不是将文本框的内容复制到剪贴板,而是复制来自快速信息工具提示的文本缓冲区中的文本。
textbox is focusable. This minimal example project 显示了不良行为。
问题:如何将工具提示中文本框的文本复制到剪贴板。
要将文本复制到剪贴板,您可以使用 Clipboard
静态 class.
SetContent()
方法
快捷方式的问题有点复杂。主要原因是 VS 中的快捷方式在范围内工作,因此即使您将相同的 Ctrl + C
快捷方式定义为扩展中命令的快捷方式(例如,使用此处描述的方法 How to register key binding code on VSIX package installation),默认的编辑器复制命令将采用优先于你的,并将继续处理该快捷方式。因为您的快捷方式被认为是全局范围,并且编辑器在更具体的范围内具有相同的快捷方式。
要使其正常工作,您需要在工具 window 的范围内专门定义快捷方式。这样,当您的 window 获得焦点时,VS 将优先考虑您的工具 window 的范围,而不是编辑器因此调用您的快捷方式。
这个过程涉及几个步骤,您可以参考这个答案,看看一位开发人员是如何做到的
您可以考虑的替代方法是在您的工具中添加一个小按钮 window 来复制内容,而无需使用快捷方式。