Forum:VBasic / vb.net / vbs / wsh
Thema:VB.NET: True = False ???
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
KMassler

Beiträge: 2631 / 176

** CSWP 01/2008 **
Endlich Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
Noch SWX2016 SP4;
SAP/PLM;
DriveWorks Pro;
Programmierung: VBA, aktuell VB.NET 2017

Hallo,

ich habe gerade einen seltsamen Effekt, der mich wahnsinnig macht:

Ich möchte eine Form aufrufen, vorher wird ein Button auf dieser Form auf sichtbar gesetzt (.visible = True). Eine Zeile tiefer frage ich den Wert von .visible ab, und der steht auf False.

Code:

With MyForm

...
            .btnCancel.Visible = True

            Debug.Print("MyForm: Cancel-Button-Visible= " & .btnCancel.Visible.ToString)
...
End With



Debug.print-Ergebnis:
MyForm: Cancel-Button-Visible= False
Ich versteh's net!     

Und noch seltsamer: Obwohl hier .visible auf False steht, wird der Button angezeigt!

------------------
Klaus

http://www.alko-tech.com | mein Gästebuch

[Diese Nachricht wurde von KMassler am 13. Feb. 2020 editiert.]

Torsten Niemeier

Beiträge: 3209 / 553

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

Könntest du nach dem True-Setzen mal ein DoEvents einbauen und erzählen, wie es dann aussieht?
KMassler

Beiträge: 2631 / 176

** CSWP 01/2008 **
Endlich Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
Noch SWX2016 SP4;
SAP/PLM;
DriveWorks Pro;
Programmierung: VBA, aktuell VB.NET 2017

Das ändert nichts.

Aber komischerweise: Wenn ich die Form mit .ShowDialog aufrufe, stimmt die Darstellung wie gewünscht.
 

------------------
Klaus

http://www.alko-tech.com | mein Gästebuch

fritsrol

Beiträge: 141 / 114

Windows 10 64
Office 2013
Eplan P8 2.7 HF2
VS 2015
Medusa 2000i2

Ich habe folgende Vermutung

Kann es sein das die Form bei der ersten Abfrage noch nicht dargestellt wird ?
Keine Form sichtbar -> Elemente der Form auch noch nicht sichtbar ...

Gruß
Roland

HenryV

Beiträge: 698 / 0

SolidWorks 2018 x64 SP4.0
Dell T3600 Workstation
Intel XENON 6x3.2 GHz
NVIDIA Quadro 4000 2 GB
16GB RAM
2x Dell U2412M, 24" TFT
Windows 7 Professional x64 SP1
Microsoft Office Pro 2010 SP2
Kaspersky Anti-Virus 10.2.4.674
Microsoft VB 2010 Express
SpacePilot von 3Dconnexion

Hallo Klaus

Das Problem mit der Eigenschaft "Visible/Aktiviert" in .Net-Controls ist, dass sie vom übergeordneten Container abhängig ist.
Das heisst, solange die Form nicht sichtbar ist, wird jedes Control Visible=false haben.

Man kann aber "schummeln" indem man GetState(2) mit Reflection abfragt.

Code:
Dim IsVisible As Boolean = CType(GetType(Control).GetMethod("GetState", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic).Invoke(MyForm.btnCancel, New Object() {2}), Boolean)

How to get the “real” value of the Visible property?

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

KMassler

Beiträge: 2631 / 176

** CSWP 01/2008 **
Endlich Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
Noch SWX2016 SP4;
SAP/PLM;
DriveWorks Pro;
Programmierung: VBA, aktuell VB.NET 2017

Danke,
das erklärt das Verhalten.
Ich konnte mir behelfen, indem ich als führende Eigenschaft .enabled verwendet habe, in Load-Prozedur wird dann die visible-Eigenschaft auf denselben Wert gesetzt.

------------------
Klaus

http://www.alko-tech.com | mein Gästebuch