获取菜单项点击菜单项及其邻居

本文关键字:菜单项 邻居 获取 | 更新日期: 2023-09-27 18:28:19

我想执行以下操作:当某个菜单项被点击时,这个菜单项应该被选中,而它旁边的菜单项应该不被选中。。我试图解决这个问题的第一部分如下:

private void runningToolStripMenuItem_Click(object sender, EventArgs e)
    {
        MenuItem mi = sender as MenuItem;
        mi.Checked = true;//causes nullpointer exception
        menuStrip1.Items[mi.index+1].Checked=false;
        menuStrip1.Items[mi.index-1].Checked=false;
    }

这个"解决方案"也会导致nullpointer异常。。

获取菜单项点击菜单项及其邻居

您的sender值不是MenuItem。这就是你破例的原因。您应该改为转换为ToolStripItem,请参阅此处

但是,由于ToolStripItem没有Checked属性,您可能希望将其强制转换为源自ToolStripItemToolStripMenuItem

var mi = sender as ToolStripMenuItem;
if (mi == null)
{
   return; // not a menu item
}
// do your stuff here