Создавайте событие, кроме случаев, когда что-то происходит - PullRequest
0 голосов
/ 30 мая 2020

Сценарий: Только если пользователь следует по пути Нажмите ListView> Нажмите кнопку Button1 что-то сделает.

Другими словами, я хочу проверить Button1_Click (отправитель объекта, EventArgs e) , если предыдущий фокус был на ListView.

Итак, я попробовал это:

private void ListView_Test_Leave(object sender, EventArgs e)
    {
        _focusedControl = null;
    }

Я хочу вызвать предыдущее событие, кроме случаев, когда это событие возникает:

    private void Button1_Click(object sender, EventArgs e)
        {  
            if(_focusedControl == listView_Test)
            {
                // ...
            }
        }

Изменить: I есть переменная, которая содержит ссылку на текущий сфокусированный элемент управления:

private Control _focusedControl;

, и я обновляю ее следующим образом:

    private void ListView_Test_GotFocus(object sender, EventArgs e)  
    {
        _focusedControl = (Control)sender;
    }

Если пользователь следует по пути Нажмите ListView> Click on Button Я хочу вызвать только событие Button1_Click, во всех остальных случаях мне нужен нормальный подъем.

1 Ответ

0 голосов
/ 30 мая 2020

Вы можете использовать вспомогательную переменную.

bool wasRaised=false;
private void Button1_Click(object sender, EventArgs e) { wasRaised=true;}

Затем вы можете проверить эту переменную в своем событии и запускать только в том случае, если она ложна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...