| |
VB.NET - FortgeschritteneControl verweigert Visible-Eigenschaft | | | Autor: Joe1968 | Datum: 20.06.16 18:49 |
| Hallo zusammen,
ich habe ein Panel mit einigen dynamisch erzeugten Controls, welches zum Anzeigen von Leitfadenergebnissen genutzt wird. Mein Problem dreht sich um eine Textbox auf diesem Panel, welche ich abhängig von einem Selected Item einer Listbox von Visible = False auf Visible = True setzen will. Dazu gehe ich mit einer Schleife durch die auf dem Panel befindlichen Control und ordne z.B. diese Textbox einer Variablen zu.
Diese setze ich dann auf Visible = True, die Eigenschaft ändert sich aber nicht. Bei anderen Labels und Listboxen klappt das komischerweise.
Habt Ihr eine Idee, an der sowas typischerweise liegen könnte und auf die ich noch nicht gekommen bin?
Viele Grüße
Joe | |
Re: Control verweigert Visible-Eigenschaft | | | Autor: Manfred X | Datum: 20.06.16 22:29 |
| Hallo!
Du hast wohl einen Fehler in Deinem Code.
Was verstehst Du unter [I]"ordne z.B. diese Textbox einer Variablen zu".[/I]
Denkbar:
- Du "erwischt" nicht das Control, das Du möchtest.
- Das Control ist von anderen Elementen verdeckt.
Die Änderung der Visible-Eigenschaft wird deshalb nicht sichtbar.
- Du löst bei der Zuweisung eine Ereigniskette aus,
durch die die Visible-Eigenschaft zurückgesetzt wird. | |
Re: Control verweigert Visible-Eigenschaft | | | Autor: Joe1968 | Datum: 21.06.16 20:57 |
| Das habe ich alles schon kontrolliert.
Es ist so, dass in diesem Leitfaden mehrere gleichartige Tabpages erzeugt werden. Es ist ein Gesprächsleitfaden für ein Callcenter und je nach vorhandenen Produkten des Kunden wird eine Tabpage erzeugt und die Fragen angezeigt. Zu Beginn werden ein paar fest positionierte Labels und TextBoxen erzeugt und auf Visible = False gesetzt. Erst bei einer bestimmten Antwort einer bestimmten Frage wird das Label und die TextBox sichtbar gemacht. Das passiert aber nur, wenn man einen bestehenden Datensatz wieder aufruft und die Controls mit den Inhalten der zuvor gegebenen Antworten befüllt werden. Das Verrückte ist, dass die Tabpages von der gleichen Funktion mit immer dem gleichen Ablauf erzeugt werden. Und manchmal wird eben eine TextBox nicht angezeigt, das Label aber schon.
Ich habe mir jetzt mit einer sehr uncharmanten Lösung beholfen. Ich gehe nach Abschluss der Anzeige noch mal über alle Tabpages, durchsuche sie nach relevanten Controls und setze sie auf Visible = True. Komischerweise werden sie dann angezeigt.
Ich vermute, dass man ohne den Quellcode gesehen zu haben, sowieso keine Lösung anbieten kann.
Aber trotzdem vielen Dank für Deinen Versuch | |
Re: Control verweigert Visible-Eigenschaft | | | Autor: Manfred X | Datum: 22.06.16 06:21 |
| Naja!
Im Deinem ersten Post waren die Textboxen noch auch Panels angesiedelt,
in Deinem zweiten Post ist jetzt von TabPages die Rede.
Der Zugriff auf Controls und das Verhalten von Controls hängt auch vom
Container und dessen Einrichtung ab! | |
Re: Control verweigert Visible-Eigenschaft | | | Autor: msSuper | Datum: 22.06.16 16:29 |
| Versuch mal nachdem das Control auf Visible gesetzt ist.
Das Control mit .BringToFront nach vorne zu holen. | |
Re: Control verweigert Visible-Eigenschaft | | | Autor: us4711 | Datum: 23.06.16 11:46 |
| Ist die TabPage bei hinzufügen des Controls sichtbar?
Manchmal werden neu controls erst nach Tabpage.Invalidate dargestellt, vielleicht mal nach hinzufügen des Controls ausführen. | |
Re: Control verweigert Visible-Eigenschaft | | | Autor: Joe1968 | Datum: 29.06.16 19:00 |
| Nein, leider ist weder BringToFront, noch Invalidate die Lösung
Mir ist aber eben noch etwas aufgefallen, was auf einen Programmierfehler von mir hindeutet. Es gibt für jedes Produkt eine TabPage, auf jeder TabPage ein Panel und auf dem Panel werden die Controls hinzugefügt. Die betroffene Textbox ist immer in der letzten TabPage bzw. auf dem Panel sichtbar, alle anderen nicht. Ich vermute, dass ich selbst Schuld bin. Da dieses Programm leider aus meinen Anfängen stammt, habe ich einen ziemlich unstrukturierten Spaghetticode. Ich werde also noch mal tief eintauchen und versuchen herauszufinden warum die Textbox immer nur auf dem letzten sichtbar ist.
Ich habe ja zum Glück noch eine Ausweichlösung gefunden, wenn auch keine charmante. Sobald ich meinen Fehler gefunden habe, poste ich ihn.
Vielen Dank aber schon mal für Eure Beiträge | |
Re: Control verweigert Visible-Eigenschaft | | | Autor: Manfred X | Datum: 29.06.16 19:35 |
| Hallo!
Mein Tipp wäre, dieses Formular neu aufzubauen und dabei
eine Trennung zwischen Datenklassen und Controls einzuführen.
Die Erfahrung lehrt, daß es auf Dauer kaum Sinn macht, immer
wieder viel Zeit für die Suche nach "Fehlern" und Inkonsistenzen
in einem schwach strukturierten Code aufzuwenden. | |
Re: Control verweigert Visible-Eigenschaft | | | Autor: Joe1968 | Datum: 12.09.16 10:56 |
| Ich habe gerade gemerkt, dass ich nicht gepostet habe, was der Fehler war. Es war natürlich ein Programmierfehler meinerseits. Blöderweise habe ich einen Codeabschnitt kopiert, um ein weiteres Control zu erzeugen, den Namen der Variable, der das Control zugewiesen wurde, aber nicht geändert. Nachdem ich das angepasst hatte, lief es natürlich.
Etwas spät, sorry. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|