Вопрос C#: динамически отключить ToolStripMenuItems/ToolStripButtons в форме MDIParent: какое событие?
Любое руководство по следующему вопросу будет принята с благодарностью. В каком событии MDIParent я должен отключить элементы / кнопки? Активированный? В программе Launch я хочу, чтобы кнопки были отключены. Если нет активных MDIChildren, я хочу, чтобы кнопки отключены. Когда я запускаю дочернюю форму, я хочу проверить эту дочернюю форму на данные. Если это пустая форма, я хочу, чтобы кнопки оставались отключенными. В настоящее время у меня есть код в обработчике событий MdiChildActivation. Спасибо за ваше время.
2 ответа
Я использовал Активировать событие, чтобы отключить все элементы / кнопки. В событии MDIChildActive я проверяю бланк. Если не пусто, я включаю пункты / кнопки.
Я бы использовал событие MdiChildActivate родительской формы MDI: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.mdichildactivate.aspx
Обратите внимание на это замечание с этой страницы:
Это событие можно использовать для выполнения таких задач, как обновление содержимого дочерней формы MDI и изменение параметров меню, доступных в родительской форме MDI, в зависимости от состояния активированной дочерней формы MDI.
Также обратите внимание, что это событие также вызывается, когда дочерний объект закрыт (из MSDN): Происходит, когда дочерняя форма интерфейса с несколькими документами (MDI) активируется или закрывается в приложении MDI.
Это означает, что в этом случае вы могли бы сделать что-то вроде:
menuButton.Enabled = (this.MdiChildren.Length> 0);
или, если вам нужно проверить все дочерние формы на наличие каких-либо условий, и если одному из дочерних элементов нужна активированная кнопка, включите кнопку:
void Form1_MdiChildActivate(object sender, EventArgs e)
{
foreach (Form child in MdiChildren)
{
if (IsToolbarButtonNeededForThisForm(child))
{
toolButton.Enabled = true;
break;
}
}
toolButton.Enabled = false;