8
我想添加一個菜單項到RichTextBox
的默認ContextMenu
。將菜單項添加到默認的上下文菜單
我可以創建一個新的上下文菜單,但然後我失去了默認菜單中顯示的拼寫檢查建議。
有沒有辦法添加一個項目而不重新實現所有內容?
我想添加一個菜單項到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