在 MenuStrip 上设置菜单项状态

Setting menu item state on a MenuStrip

在 Visual C++ MFC 中,有一个用于设置菜单项状态的内置机制。我正在尝试对 C# 和 WindowsForm 对象执行相同的操作。

我发现这个不太一样:

Grey out menustrip items when certain forms are open/active/focused

这是我的菜单结构:

所以,我决定试试这个:

private void viewToolStripMenuView_Click(object sender, EventArgs e)
{
    zoomExtentsToolStripMenuItem.Enabled = viewCtrl != null;
}

有点效果。但我有点挑剔。我可以看到显示的菜单启用了该项目,然后我看到它变为禁用。

在显示菜单之前设置菜单项状态的正确方法是什么?我知道这听起来像是一个简单的问题,但我找不到与 ON_UPDATE_COMMAND_UI.

等效的方法

我使用了错误的事件处理程序!

private void viewToolStripMenuView_DropDownOpening(object sender, EventArgs e)
{
    zoomExtentsToolStripMenuItem.Enabled = viewCtrl != null;
}