Там может быть лучшее решение, но быстрый способ - проверить, имеет ли форма фокус. Итак, в вашем дочернем обработчике событий добавьте сверху:
if ( this.MdiParent.ActiveControl.Name != this.Name )
{
return;
}
Очевидно, что это не мешает запуску события, а только предотвращает запуск следующего кода.
Редактировать: Если для элемента меню нет обработчика событий, единственный другой способ, который я могу придумать, - это создать обработчики для событий Enter
и Leave
дочерней формы:
private void ChildForm_Leave( object sender, EventArgs e )
{
menuItem.Enabled = false;
}
private void ChildForm_Enter( object sender, EventArgs e )
{
menuItem.Enabled = true;
}