Вопрос C #: динамически отключить ToolStripMenuItems / ToolStripButtons в форме MDIParent: какое событие? - PullRequest
1 голос
/ 27 апреля 2010

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

Ответы [ 2 ]

0 голосов
/ 28 апреля 2010

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

0 голосов
/ 27 апреля 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;
...