2016-07-04 14 views
1

Ich habe etwas Code in Windows Forms-Anwendung.Ich möchte die Sichtbarkeit meiner Dropdown-Elemente von toolStripMenuItem in C# -Code ändern.Ich setze die Sichtbarkeit, aber wenn ich Haltepunkte im Code setzt die Sichtbarkeit des Elements nicht ändern.Wie setze ich im Code auf wahr?

Hier ist mein Code:

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; 
     }             
    }           
} 

wie diese zu lösen?

+0

Getestet habe ich gerade dies und es funktioniert von einem Hover-Ereignis auf einem der Drop-down-Elemente in Ordnung. So muss es sein, wie @Jcl sagt, und Sie haben etwas Komplexeres, das nicht in Ihrem Schnipsel gefangen ist. – zeromus

+0

Ja ... abgesehen davon (ich habe es meiner Antwort hinzugefügt), sollten Sie 'Visible' nicht für' ToolStriptem' verwenden ... es gibt eine 'Available' Eigenschaft zum Ein-/Ausblenden von Einträgen in einem Menü. – Jcl

Antwort

3

Visible ist eine komplizierte Eigenschaft. Es wird nicht gleich gesetzt und gelesen.

Wenn Sie gesetzt es true oder false sagt, ob das Objekt sein wird (oder nicht) sichtbar. Wenn Sie jedoch lesen es zeigt, ob die Sichtbarkeit dieses Steuerelements auf wahr oder falsch festgelegt ist, aber es wird als false gelesen, wenn ein beliebiges Elternteil in der Kette auch ausgeblendet ist.

So Setzen und Lesen ist es eine andere Sache: Auch wenn Sie es true gesetzt, kann es false im Debugger kommen, wenn Sie es zurück (wieder, wenn alle Eltern in der Kette versteckt ist) gelesen: Es wird werden true, wenn alle Eltern sichtbar sind.

Verwenden Sie für ToolStripItem insbesondere die Available Eigenschaft anstelle von Visible: Dies sollte tun, was Sie erwarten. Die Dokumentation (die ich verlinkt) spricht speziell dazu:

Die Available-Eigenschaft aus der Visible-Eigenschaft unterscheidet, dass verfügbar zeigt an, ob das ToolStripItem angezeigt wird, während Visible zeigt an, ob das ToolStripItem und ihre Mutter gezeigt. Wenn Sie "Verfügbar" oder "Sichtbar" auf "Wahr" oder "Falsch" setzen, wird die andere Eigenschaft auf "Wahr" oder "Falsch" gesetzt.

Verwandte Themen