Будем очень признательны за любые рекомендации по следующему вопросу. В каком событии MDIParent следует отключать элементы/кнопки? Активирован? При запуске программы я хочу, чтобы кнопки были отключены. Если нет активных MDIChildren, я хочу, чтобы кнопки были отключены. Когда я запускаю дочернюю форму, я хочу проверить эту дочернюю форму на наличие данных. Если это пустая форма, я хочу, чтобы кнопки оставались отключенными. В настоящее время у меня есть код в обработчике событий MdiChildActivated. Спасибо за ваше время.
Вопрос C#: динамическое отключение элементов ToolStripMenuItems/ToolStripButtons в форме MDIParent: какое событие?
Ответы (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;