나는 MDI Windows Forms
응용 프로그램에서 작업 중입니다. 부모님 양식에는 ToolStrip
메뉴와 일부 ToolStripDropDownButtons
메뉴가 있습니다. ToolStripDropDownButton
의 Visible
속성 또는 해당 사용자의 허가에 따라 ToolStripItems
(하위 버튼) 중 일부 속성을 변경하고 싶습니다.Windows Forms - 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로 설정됩니다. 값을 실제로 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