2016-03-29 40 views
1

Ich habe ein Objekt vom Typ ImageButton. Ich habe auch Code folgende:Bool-Variablen werden nicht aktualisiert

LogManager.GetCurrentClassLogger().Log(LogLevel.Info, "###payWithVisa.Enabled ={0}; payWithVisa.Visible ={1}; canPayWithCard={2}", payWithVisa.Enabled, payWithVisa.Visible, canPayWithCard); 

payWithVisa.Enabled = canPayWithCard; 
payWithVisa.Visible = canPayWithCard; 

LogManager.GetCurrentClassLogger().Log(LogLevel.Info, "payWithVisa.Enabled ={0}; payWithVisa.Visible ={1}; canPayWithCard={2}", payWithVisa.Enabled, payWithVisa.Visible, canPayWithCard); 

Dies ist der entsprechende Protokolleintrag:

2016-03-29 11:37:49.1308|INFO|###payWithVisa.Enabled =True; payWithVisa.Visible =False; canPayWithCard=True 
2016-03-29 11:37:49.1348|INFO|payWithVisa.Enabled =True; payWithVisa.Visible =False; canPayWithCard=True 

Sie können sehen, dass die Variable payWithVisa.Visible nicht aktualisiert. Es ist immer noch falsch, obwohl ihm eine Variable mit dem Wert true zugewiesen wurde.

Kann mir bitte jemand helfen zu klären, was los ist?

PS. .NET Framework verwendet: 4.0

+0

Können Sie die Variablendefinitionen überprüfen/anzeigen und sicherstellen, dass sie Bool-Typ sind? – navigator

Antwort

5

Eine Möglichkeit (von den documentation auf MSDN):

Wenn ein Container-Steuerelement nicht wiedergegeben wird, alle Steuerelemente, die es enthält nicht einmal wiedergegeben werden, wenn Sie die Visible-Eigenschaft einer individuellen Kontrolle zu wahren. In diesem Fall gibt das einzelne Steuerelement für die Visible-Eigenschaft false zurück, auch wenn Sie es explizit auf "True" festgelegt haben. (Das heißt, wenn die Visible-Eigenschaft der übergeordneten Steuerung auf false gesetzt ist, erbt das Kind Kontrolle diese Einstellung und die Einstellung hat Vorrang vor jeder lokalen Einstellung.)

Daher können Sie, wenn übergeordnete Steuerung überprüfen mögen wurde zuerst gerendert.

+0

Das ist wahr. Danke. –

Verwandte Themen