Я использую NSTextView, чтобы пользователь мог ввести свой ответ.Я включил непрерывную проверку орфографии, и у неправильных слов есть красная линия под ними.У меня есть общий SpellChecker, который я использую.Но я хочу, чтобы пользователь сделал правый клик и исправил орфографию.У меня есть следующие вопросы -
В текстовом редакторе, как только вы щелкнете правой кнопкой мыши, будет выделено слово, как я могу добиться того же?Я планирую получить выбранный диапазон и передать его проверке орфографии.
Как только предложения проверки орфографии добавляются в контекстное меню, они все равно отображаются при переходе к следующему слову, поэтомуя должен всегда очищать контекстное меню перед добавлением любого нового элемента?
Я использую Monobjc, и когда я выполняю следующий код, я получаю исключение -
var t = Menu.ItemArray;
foreach(var s in t)
{
var menuItem = s.CastAs ();// исключение
}
Я в основном пытаюсь заставить отдельный NSMenuItem проверять, есть ли в нем варианты правописания или что-то еще.
EDIT - добавлена трассировка стека
System.InvalidCastException: Cannot cast from source type to destination type.
at example.test.MacOS.UI.HTML.ESView.MenuForEvent (Monobjc.Cocoa.NSEvent theEvent) [0x00000] in <filename unknown>:0
at Monobjc.Dynamic.Proxies.example.test.MacOS.UI.HTML.ESView.MenuForEvent_Monobjc_Cocoa_NSEvent (IntPtr receiver, IntPtr selector, IntPtr ) [0x00000] in <filename unknown>:0
at (wrapper native-to-managed) Monobjc.Dynamic.Proxies.example.test.MacOS.UI.HTML.ESView:MenuForEvent_Monobjc_Cocoa_NSEvent (intptr,intptr,intptr)
at (wrapper managed-to-native) E5EEC20A:pinvoke (intptr,intptr,intptr)
at E5EEC20A.objc_msgSendSuper (IntPtr receiver, IntPtr selector, System.Object[] parameters) [0x00000] in <filename unknown>:0
at Monobjc.Bridge.Generators.DynamicMessagingGenerator.SendMessage (System.String message, IntPtr receiver, IntPtr selector, System.Object[] parameters) [0x00000] in <filename unknown>:0
at Monobjc.ObjectiveCRuntime.SendMessageSuper (IManagedWrapper receiver, Monobjc.Class cls, System.String selector, System.Object[] parameters) [0x00000] in <filename unknown>:0
at Monobjc.Id.SendMessageSuper (Monobjc.Class cls, System.String selector, System.Object[] parameters) [0x00000] in <filename unknown>:0
at example.test.MacOS.UI.App.Application.SendEvent (Monobjc.Cocoa.NSEvent theEvent) [0x00000] in <filename unknown>:0
at Monobjc.Dynamic.Proxies.example.test.MacOS.UI.App.Application.SendEvent_Monobjc_Cocoa_NSEvent (IntPtr receiver, IntPtr selector, IntPtr ) [0x00000] in <filename unknown>:0
at (wrapper native-to-managed) Monobjc.Dynamic.Proxies.example.test.MacOS.UI.App.Application:SendEvent_Monobjc_Cocoa_NSEvent (intptr,intptr,intptr)
at (wrapper managed-to-native) Monobjc.ObjectiveCRuntime:objc_msgSend (intptr,intptr)
at Monobjc.ObjectiveCRuntime.SendMessage (IManagedWrapper receiver, System.String selector) [0x00000] in <filename unknown>:0
at Monobjc.Cocoa.NSApplication.Run () [0x00000] in <filename unknown>:0
at example.test.MacOS.UI.App.Application.RunApplication () [0x00000] in <filename unknown>:0
at example.test.MacOS.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
РЕДАКТИРОВАТЬ - Шаг 3
Вопрос 3 работал на основе предложения Лорана.