Как изменить / настроить порядок событий «LayoutChange» и «KeyUp» в c# - PullRequest
0 голосов
/ 21 февраля 2020

Я работаю над проектом 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...