私はMDI Windows Forms
アプリケーションで作業しています。私の親のフォームはToolStrip
のメニューといくつかのToolStripDropDownButtons
です。 ToolStripDropDownButton
のVisible
プロパティまたはそれに応じてユーザの許可に応じてToolStripItems
(サブボタン)のプロパティを変更したいとします。Windowsフォーム - ToolStripItem Visibleプロパティは常にfalseに設定されています
private void SetToolStripDropDownVisibility(ToolStripDropDownButton mainBtn, params ToolStripItem[] item)
{
mainBtn.Visible = false;
foreach (ToolStripItem tempItem in item)
{
tempItem.Visible = true;
}
}
私は最初の引数ToolStripDropDownButton
とのparamsリストなど、他のすべての「サブボタン」と渡している:ここで
foreach (ToolStripItem tempItem in item)
の部分でデバッグモードに入ると、
tempItem
Visibleプロパティはfalseとマークされます。ただし、デザイナではこのプロパティはtrueに設定されています。あなたは、値を実際に
tempItem.Visible = true;
に変更しようと明示的に試みることさえわかりますが、この行が何もしていないかのようです。
Visible
の値は
false
のままで、変更できません。
これはメソッドのほんの始まりであり、ToolStrip
の項目で混乱する可能性のある他のコードについては考えられません。 mainBtn.Visible
の値をtrueまたはfalseに変更しようとしましたが、おそらく接続がありますが、これは問題ではないようです。なぜこのようなことが起こっているのか、どうして私はVisible
の価値を変更できないのですか?
List<ToolStripMenuItem> allItems = new List<ToolStripMenuItem>();
foreach (ToolStripMenuItem toolItem in menuStrip1.Items)
{
allItems.Add(toolItem);
//add sub items
allItems.AddRange(GetItems(toolItem));
}
foreach (ToolStripMenuItem item in allItems)
{
//make your toolstripMenuItem invisible or whatever you want to do with it.
}
allItems.Clear();
変更menuStrip1
あなたtoolstrip
を呼ぶものは何でも:
"item"を "items"に変更しても害はなく、可読性が向上します。 – David