将菜单项添加到默认的上下文菜单
问题描述:
我想添加一个菜单项到RichTextBox
的默认ContextMenu
。将菜单项添加到默认的上下文菜单
我可以创建一个新的上下文菜单,但然后我失去了默认菜单中显示的拼写检查建议。
有没有办法添加一个项目而不重新实现所有内容?
答
这不是太棘手重新实现拼写建议,剪切,粘贴RichTextBox的上下文菜单等
挂钩的上下文菜单中开幕活动如下:
AddHandler(RichTextBox.ContextMenuOpeningEvent, new ContextMenuEventHandler(RichTextBox_ContextMenuOpening), true);
在事件处理程序的构建您需要的上下文菜单。您可以通过以下重建现有的上下文菜单中的菜单项:
private IList<MenuItem> GetSpellingSuggestions() { List<MenuItem> spellingSuggestions = new List(); SpellingError spellingError = myRichTextBox.GetSpellingError(myRichTextBox.CaretPosition); if (spellingError != null) { foreach (string str in spellingError.Suggestions) { MenuItem mi = new MenuItem(); mi.Header = str; mi.FontWeight = FontWeights.Bold; mi.Command = EditingCommands.CorrectSpellingError; mi.CommandParameter = str; mi.CommandTarget = myRichTextBox; spellingSuggestions.Add(mi); } } return spellingSuggestions; } private IList<MenuItem> GetStandardCommands() { List<MenuItem> standardCommands = new List(); MenuItem item = new MenuItem(); item.Command = ApplicationCommands.Cut; standardCommands.Add(item); item = new MenuItem(); item.Command = ApplicationCommands.Copy; standardCommands.Add(item); item = new MenuItem(); item.Command = ApplicationCommands.Paste; standardCommands.Add(item); return standardCommands; }
如果有拼写错误,您可以创建所有与忽略:
MenuItem ignoreAllMI = new MenuItem(); ignoreAllMI.Header = "Ignore All"; ignoreAllMI.Command = EditingCommands.IgnoreSpellingError; ignoreAllMI.CommandTarget = textBox; newContextMenu.Items.Add(ignoreAllMI);
根据需要添加分隔符。将这些添加到新的上下文菜单的项目中,然后添加闪亮的新MenuItems。
虽然我将继续寻找获取实际上下文菜单的方法,因为这与我将在不久的将来进行的工作相关。
谢谢,唐纳尔。我想它可能会重新实施。感谢关于如何做到这一点的提示! – dmo 2008-10-20 18:44:49