2010-04-11 5 views
1

В приложении MDI, какое событие может использовать дочерний класс формы для обнаружения, когда приложение становится активным?Обнаруживать, когда приложение становится активным

Я пробовал событие Form.Acivated, но это происходит только тогда, когда форма активирована и не работает, когда приложение получает фокус.

ответ

2

Это родительская форма MDI, которая получает активированное событие. Вы можете подписаться на событие в событии Load вашей дочерней формы. Будьте осторожны, вы должны убедиться, что вы отменили подписку на событие, когда ребенок закрывается, или вы пропустите экземпляр дочерней формы. Сделайте это так:

protected override void OnLoad(EventArgs e) { 
    var main = this.MdiParent; 
    main.Activated += main_AppActivated; 
    this.FormClosed += (o, ea) => main.Activated -= main_AppActivated; 
} 

void main_AppActivated(object sender, EventArgs e) { 
    // Etc... 
} 
1

Вы пробовали мероприятие GotFocus?

+0

Да, он создается только один раз, когда создается форма. –

1

В то время как WPF has such a notion, WinForms не имеет значения, насколько мне известно; вам нужно будет использовать события на уровне формы (например, GotFocus из более раннего ответа).