2013-07-11 81 views
0

我需要动态禁用菜单项的子子项。这里在菜单栏中如果我运行启动时,禁用启动选项应该禁用如何实现这一点。我已附上快照参考如何禁用菜单条子菜单

// Run At Startup 
private void runAtStartupToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    rkApp.SetValue("TimeCalculation", "\"" + Application.ExecutablePath.ToString() + "\""); 
    Environment.GetFolderPath(Environment.SpecialFolder.Startup); 
    menuStrip1.Items["disableStartupToolStripMenuItem"].Enabled = false; 

} 

//Disable Startup 
private void disableStartupToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    rkApp.DeleteValue("TimeCalculation", false); 
    menuStrip1.Items["runAtStartupToolStripMenuItem"].Enabled = false; 
} 

快照:

enter image description here

+0

什么'Environment.GetFolderPath'呢?你不使用它的返回值。 – joe

回答

0

使用标志:

private bool flag = true; 

private void runAtStartupToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    //... 
    flag = true; 
} 

private void disableStartupToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    //... 
    flag = false; 
} 

然后使用DropDownOpening事件启用/禁用的项目。

private void bToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { 
    runAtStartupToolStripMenuItem.Enabled = !flag; 
    disableStartupToolStripMenuItem.Enabled = flag; 
} 

如果你想隐藏的项目使用Available

runAtStartupToolStripMenuItem.Available= !flag; 
    disableStartupToolStripMenuItem.Available= flag; 
+0

保持另一面旗帜的意义何在?您已经拥有一个“启动时运行”菜单项的“已检查”状态。只用那个! –

+0

另外,你确定有'Available'属性吗?我相信你可能会想到“可见”。 –

+0

@CodyGray:1)没错。但我通常使用单独的标志,所以功能不会绑定到UI。这使得我可以在其他地方移动功能,而我的UI仍在工作。 2)有一个'可用'我自己使用它。 – joe