Я работаю над проектом VSIX Text Adornment . Здесь у меня есть LayoutChanged событие и KeyUp событие (из KeyProcessor ). Теперь, когда я нажимаю любую клавишу (предположим, Enter), оба события могут быть выполнены. Теперь проблема в том, что сначала выполняется событие LayoutChanged, и оно не позволяет выполнить событие KeyUp (но в самый первый раз, когда я нажимаю любую клавишу, выполняется событие KeyUp, а затем после события LayoutChanged. Но позже LayoutChanged используется только выполнено).
Я хочу, чтобы событие KeyUp всегда выполнялось первым. Затем остальные события
Ниже приведен код как для событий, так и для конструктора:
TextAdornment1 :
public TextAdornment1(IWpfTextView tv, ITextDocumentFactoryService textDocumentFactoryService)
{
this._textDocumentFactoryService = textDocumentFactoryService;
if (tv == null)
{
throw new ArgumentNullException("view");
}
this.layer = tv.GetAdornmentLayer("TextAdornment1");
this.view = tv;
}
KeyUp событие:
public override void KeyUp(KeyEventArgs args)
{
this.view.LayoutChanged += OnLayoutChangedEvent;
if (args.Key == Key.Enter)
{
KeyEventProcessor.layouytChangeOccured = 0;
KeyEventProcessor.isEnterKeyUp = true;
}
else
{
KeyEventProcessor.layouytChangeOccured = 0;
KeyEventProcessor.isEnterKeyUp = false;
KeyEventProcessor.layouytChangeOccured = 0;
}
}
LayoutChanged событие:
internal async void OnLayoutChangedEvent(object sender, TextViewLayoutChangedEventArgs e)
{
OnLayoutChanged2(e);
}