2016-07-04 5 views
1

Windows Forms 응용 프로그램에서 일부 코드가 있습니다. 내 드롭 다운의 가시성을 변경하고 싶습니다. toolStripMenuItem의 항목을 C# 코드로 변경하고 싶습니다. 가시성을 설정했지만 코드에서 중단 점을 설정하면 항목의 가시성이 변경되지 않습니다.코드에서 표시를 true로 설정하는 방법은 무엇입니까?

foreach (ToolStripMenuItem it in _frmMain.menuStripMain.Items) 
{ 

    foreach (ToolStripMenuItem i in it.DropDownItems) 
    { 

     if (i.Text == this._listAppSchema[0].ObjectName.ToString()) 
     { 
      i.Visible = true; 
     } 
     else 
     { 
      i.Visible = false; 
     }             
    }           
} 

방법이 문제를 해결하려면 다음

내 코드?

+0

방금 ​​테스트했으며 드롭 다운 항목 중 하나의 호버 이벤트에서 정상적으로 작동합니다. 그래서 그것은 @Jcl이 말했듯이 여러분의 스 니펫에 포착되지 않은 더 복잡한 무언가를 가지고 있습니다. – zeromus

+0

네 ... 그렇습니다 ... (필자의 답에 덧붙였다)'ToolStriptem's에'Visible'을 사용해서는 안됩니다 ... 메뉴에 항목을 표시하거나 숨길 수있는'Available' 속성이 있습니다. – Jcl

답변

3

Visible복잡한 속성입니다. 그것을 설정하고 읽지 않습니다. 당신 true 또는 false을 설정하면

이 객체가 보이지 (여부) 여부를 말한다. 그러나 으로 읽으면 해당 컨트롤의 가시성이 true 또는 false로 설정되어 있는지를 나타내지 만 의 부모가 숨겨져 있으면 false으로 표시됩니다.

그래서 설정하고 읽는 것은 다릅니다 : true으로 설정하더라도 디버거에서 다시 읽을 때 false이 올 수 있습니다 (체인의 부모가 숨겨져있는 경우). 부모가 모두 보일 때 true이됩니다.

특히 ToolStripItem의 경우 Visible 대신 Available 속성을 사용하십시오. 예상 한대로 수행해야합니다. (I 연결된) 문서는 이것에 대해 구체적으로 이야기 :이 가능한이 ToolStripItem을이 표시되어 있는지 여부를 나타냅니다에 가시가 ToolStripItem을하고 부모가 표시되는지 여부를 나타내는 반면

사용 가능한 속성은, Visible 속성 다릅니다. Available 또는 Visible을 true 또는 false로 설정하면 다른 속성이 true 또는 false로 설정됩니다.

관련 문제