OnUpdateMenuUI в C #? - PullRequest
       13

OnUpdateMenuUI в C #?

1 голос
/ 08 февраля 2009

Есть ли механизм, где я могу получать уведомления об обновлениях, когда пользователи пытаются открыть пункт меню, как в MFC. Я знаю, что прямого пути нет, но хаков должно быть много, вот о чем я прошу.

1 Ответ

2 голосов
/ 08 февраля 2009

Какая архитектура?

В winforms (MenuStrip) вы можете использовать событие DropDownOpening - что делать?

На старшем MenuItem есть событие Popup, которое работает аналогично.

Я не уверен насчет WPF ...

Это демонстрирует оба (MenuItem сначала, затем ToolStripMenuItem):

using System;
using System.Windows.Forms;
static class Program {
    [STAThread]
    static void Main() {
        // older menuitem
        MenuItem mi;
        using (Form form = new Form {
            Menu = new MainMenu {
                MenuItems = {
                    (mi = new MenuItem("abc"))
                }
            }
        })
        {
            mi.MenuItems.Add("dummy");
            mi.Popup += delegate {
                mi.MenuItems.Clear();
                mi.MenuItems.Add(DateTime.Now.ToLongTimeString());
            };
            Application.Run(form);
        }

        MenuStrip ms;
        ToolStripMenuItem tsmi;
        using (Form form = new Form {
            MainMenuStrip = (ms = new MenuStrip {
                Items = {
                    (tsmi = new ToolStripMenuItem("def"))
                }
            })
        })
        {
            form.Controls.Add(ms);
            tsmi.DropDownItems.Add("dummy");
            tsmi.DropDownOpening += delegate {
                tsmi.DropDownItems.Clear();
                tsmi.DropDownItems.Add(DateTime.Now.ToLongTimeString());
            };
            Application.Run(form);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...