Вопрос C#: динамическое отключение элементов ToolStripMenuItems/ToolStripButtons в форме MDIParent: какое событие?

Будем очень признательны за любые рекомендации по следующему вопросу. В каком событии MDIParent следует отключать элементы/кнопки? Активирован? При запуске программы я хочу, чтобы кнопки были отключены. Если нет активных MDIChildren, я хочу, чтобы кнопки были отключены. Когда я запускаю дочернюю форму, я хочу проверить эту дочернюю форму на наличие данных. Если это пустая форма, я хочу, чтобы кнопки оставались отключенными. В настоящее время у меня есть код в обработчике событий MdiChildActivated. Спасибо за ваше время.


person RedEye    schedule 27.04.2010    source источник


Ответы (2)


Я использовал событие активации, чтобы отключить все элементы/кнопки. В событии MDIChildActive я проверяю пустую форму. Если не пусто, я включаю элементы/кнопки.

person RedEye    schedule 27.04.2010

Я бы использовал событие 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;
person user218447    schedule 27.04.2010