[英]How to programmatically enable \ disable nested sub-menu items in a ToolStripMenuItem?
在我的Winforms應用程序中,我有一個帶有嵌套子項的ToolStripMenuItem,其結構如下所示。
文件
。+ ...添加為.... + ...文件
............................夾
............................根文件夾
在“添加為”下,我希望能夠根據需要以編程方式啟用和禁用“文件”,“文件夾”和“根文件夾”。 如何在代碼中訪問這些嵌套項目?
我已經嘗試過ToolStripMenuItem.DropDownItems [0] .Enabled = true \\ false; 但這會影響“添加為”以及菜單層次結構中其下方的所有內容。
如果在上面的代碼中使用大於零的索引,則會出現“索引超出范圍”錯誤。 我該如何實現此功能?
只需簡單地用子名稱引用子項,例如:
FileToolStripMenuItem.Enabled = false;
FolderToolStripMenuItem.Enabled = false;
RootFolderToolStripMenuItem.Enabled = false;
除非我缺少任何東西,否則這似乎是最簡單的答案。
正如漢斯在他的評論中暗示的那樣,您引用的是錯誤的DropDownItems集合。
為此,使用索引會很快變得難看。
僅引用父菜單並遍歷“其”菜單集合更簡單:
private void toggleMenu_Click(object sender, EventArgs e) {
foreach (ToolStripMenuItem toolItem in addAsToolStripMenuItem.DropDownItems) {
toolItem.Enabled = !toolItem.Enabled;
}
}
這是一個丑陋的方法,如果您以后決定重新排列菜單結構,將很難維護該方法:
foreach (ToolStripMenuItem toolItem in ((ToolStripMenuItem)((ToolStripMenuItem)menuStrip1.Items[0]).DropDownItems[0]).DropDownItems) {
toolItem.Enabled = !toolItem.Enabled;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.