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 に答える