【问题标题】:Get the standard context menu for System.Windows.Forms.RichTextBox获取 System.Windows.Forms.RichTextBox 的标准上下文菜单
【发布时间】:2010-02-10 14:09:09
【问题描述】:

如何在 RichTextBox 中获取标准上下文菜单,如 TextBox 中的上下文菜单(复制、粘贴、IME 等)?如果开箱即用,我会选择 P/Invoke 解决方案。或者我真的必须遵循那些奇怪的建议来创建自定义菜单以获得标准菜单(sigh)?

【问题讨论】:

    标签: winforms richtextbox contextmenu


    【解决方案1】:

    richtextbox 的ContextMenuStrip 属性可以分配给用户设计的上下文菜单,复制/剪切/粘贴,只需将 RichTextBox 的方法应用于每个菜单项,例如 CanUndo、CanCopy、CanPaste 以确定菜单项的Enabled 财产。使用方法 'Copy,CutandPaste` 将是菜单项点击事件的执行方法。

    希望这会有所帮助, 最好的祝福, 汤姆。

    【讨论】:

    • 应该注意的是,TextBox 确实有自己的标准上下文菜单,通过将 null 分配给它可以防止用户复制/粘贴等...
    • 不幸的是,这只是一个我不想创建的自定义上下文菜单,尤其是对于更复杂的选项,如 IME 和插入 Unicode 字符等。Can* 属性的提及是一个很好的选择但是,建议为此+1。我想当没有人能告诉我如何获得标准菜单时我会这样做。我真的很想在 RichTextBox 上有 TextBox 标准菜单。不幸的是,这似乎是不可能的。
    • 查看这里以获取扩展 RichtextBox 的示例。codeproject.com/KB/miscctrl/richtextboxextended.aspx 我不会去实现 IME 并插入 unicode 字符,因为这会涉及到 pinvoke...
    • 有趣的事情。不过,我们在这个特定项目中使用的是 Krypton Toolkit,因此 RichTextBox 已经被封装,我认为我们无法更改底层类。另一方面,Krypton 样式只是 RichTextBox 的细边框...
    • 我现在已经接受了这个答案。这似乎是唯一的方法。 codeproject 文章是一个方便的捷径,但它与您已经建议的基本相同。
    猜你喜欢
    • 2016-10-04
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多