Как управлять потерянным фокусом в группе элементов управления WinForms? - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь надежно определить, когда фокус покидает группу элементов управления.Поэтому, если я вкладываю или нажимаю между двумя элементами управления в группе, это считается не выходом, но как только я нажимаю на элемент управления вне группы, он вызывает событие.Вот как я сейчас это делаю:

public class LeaveTracker
{
    private HashSet<Control> trackedControls = new HashSet<Control>();
    public void Track(Control ctrl)
    {
        ctrl.Leave += Ctrl_Leave;
        trackedControls.Add(ctrl);
    }

    private void Ctrl_Leave(object sender, EventArgs e)
    {
        foreach (var ctrl in trackedControls)
            if (ctrl.ContainsFocus)
                return;
        if (LeftControlGroup != null)
            LeftControlGroup(this, EventArgs.Empty);
    }
    public event EventHandler LeftControlGroup;
}

Иногда это работает отлично, но иногда кажется, что перестает вызывать события.Есть ли более надежный способ сделать это?

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