0
在我的Windows窗體應用程序中有一個toolstripmenuitem。 我需要訪問每個子菜單項並檢查是否有特定的菜單項名稱可用,如果找到該項目,我想禁用它。 例如:如何訪問ToolStripMenuItems中C#窗體表單應用程序中的子菜單項內的項目?
Report
|__Stock
| |__Stock Balance
| |__Stock Reorder
|__Sales
|__Summary
我的代碼是這樣的。根據我的代碼,我可以訪問子菜單(Stock)並禁用它。但是我無法訪問子菜單中的子項目(庫存餘額)。
String specificMenuItemName = "Stock Balance";
foreach (ToolStripMenuItem menuItem in MainMenuStrip.Items)
{
if (menuItem != null)
{
if (menuItem.HasDropDownItems)
{
foreach (ToolStripItem subMenuItem in menuItem.DropDownItems)
{
if (subMenuItem is ToolStripSeparator)
{ }
else
{
if (specificMenuItemName == subMenuItem.Text)
{
subMenuItem.Enabled = false;
}
}
}
}
}
}
如何訪問到庫存餘額和禁用它?
@ Mr.Michael,你的回答對我來說真的很有幫助。它運作良好。但是現在我遇到了使用ToolStripSeparator的問題。 ToolStripSeparator位於ToolStripItem下。我收到一個錯誤,「無法投射'System.Windows.Forms.ToolStripSeparator'類型的對象來鍵入'System.Windows.Forms.ToolStripMenuItem'。」 您可以修改您的答案以檢查並避免ToolStripSeperator? –
@KasunPerera我改變了我的代碼。改變菜單參數的類型並在循環內部添加了cast/type-checking ...'ToolStripDropDownItem'是具有'.DropDownItems'屬性的類,因此我們可以忽略每個沒有該屬性的菜單項。如果您的菜單中有組合框或文本框,它們也將被忽略... – Michael
@ Mr.Michael,我可以使用您的最終建議解決我的問題。非常感謝。真的很感謝你的貢獻。 –