1

当用户尝试打开菜单项时,是否有任何机制可以让我获得更新通知,例如在 MFC 中。我知道没有直接的方法,但应该有很多黑客,这就是我要问的。

4

1 回答 1

2

什么架构?

在 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);
        }
    }
}
于 2009-02-08T09:21:42.173 回答