Wie verhindere ich in VB.NET 2003, dass eine Owner-Form beim Laden kurz sichtbar wird, obwohl ich sie mit Form.Hide oder Form.Visible = False öffne?

Antwort

Das von dir beschriebene Problem tritt in VB.NET 2003 (Windows Forms) häufig auf, weil das Standardverhalten von Forms ist, beim Erstellen kurz sichtbar zu werden, bevor du sie verstecken kannst. Das liegt daran, dass Methoden wie `Hide()` oder das Setzen von `Visible = False` erst nach dem Laden des Formulars greifen, aber das Formular beim Erstellen schon kurz angezeigt wird. **Lösung:** Um das Aufblitzen zu verhindern, solltest du das Formular gar nicht erst anzeigen, sondern es im versteckten Zustand erstellen. Das erreichst du, indem du im Konstruktor (`New`) des Formulars die Eigenschaft `Me.ShowInTaskbar = False` und `Me.Visible = False` setzt und das Formular nicht mit `Show()` oder `ShowDialog()` öffnest, sondern nur erstellst. **Beispiel:** ```vb.net ' Im Hauptformular: Dim ownerForm As New OwnerForm() ownerForm.Visible = False ownerForm.ShowInTaskbar = False ' ownerForm.Show() NICHT aufrufen! ' ownerForm bleibt unsichtbar, kann aber als Owner gesetzt werden Me.AddOwnedForm(ownerForm) ``` **Wichtige Hinweise:** - Rufe **nicht** `Show()` oder `ShowDialog()` auf, solange das Formular unsichtbar bleiben soll. - Setze die Eigenschaften **vor** dem Anzeigen des Formulars. - Wenn du das Formular später anzeigen möchtest, kannst du dann `Show()` aufrufen. **Alternative Methode:** Setze im Designer oder im Konstruktor des Owner-Forms die Eigenschaft `Opacity = 0` und `ShowInTaskbar = False`. Dann wird das Formular auch beim Laden nicht sichtbar: ```vb.net ' Im Konstruktor (New) des Owner-Forms: Me.Opacity = 0 Me.ShowInTaskbar = False ``` Wenn du das Formular später sichtbar machen willst, setze `Opacity = 1`. **Zusammenfassung:** Das Aufblitzen lässt sich verhindern, indem du das Formular nicht mit `Show()` öffnest, sondern nur erstellst und die Sichtbarkeitseigenschaften **vor** dem Anzeigen setzt. VB.NET 2003 hat hier einige Einschränkungen, aber mit diesen Workarounds kannst du das Problem umgehen. Weitere Infos findest du auch in den [Microsoft Docs zu Windows Forms](https://learn.microsoft.com/de-de/dotnet/desktop/winforms/).

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Bedeutet in VB.NET Form.Hide das gleiche wie Form.Show ohne Sichtbarkeit?

Nein, in VB.NET bedeuten `Form.Hide()` und `Form.Show()` nicht das Gleiche, auch nicht im Zusammenhang mit Sichtbarkeit. - `Form.Hide()` blendet das Formular aus, es bleibt aber im Speicher und l&aum... [mehr]

Wie füge ich in VB.NET 2003 einen ListViewItem-Clone in ein existierendes ListViewItem einer zweiten ListView ein?

Um in VB.NET 2003 ein **ListViewItem** von einer ListView in eine andere zu kop, kannst du die `Clone()`Methode verwenden. Dabei wird ein, identisches ListViewItem erzeug, das du dann der zweiten List... [mehr]

Welche Funktion in VB.NET 2003 wandelt eine großgeschriebene Zeichenkette in eine kleingeschriebene mit großgeschriebenem ersten Buchstaben um?

In VB.NET 2003 kannst du dafür die Kombination aus `ToLower()` und `Substring()` verwenden, da es noch keine eingebaute Funktion wie `TextInfo.ToTitleCase` für einzelne Wörter gibt (die... [mehr]

Wie finde und selektiere ich in VB.NET 2003 bestimmte Einträge in einer TreeView?

Um in VB.NET 2003 bestimmte Einträge (Nodes) in einer TreeView zu finden und zu selektieren, gehst du typischerweise so vor: 1. **Durchlaufen der TreeView-Nodes** Da die TreeView eine hiera... [mehr]

Funktioniert in VB.NET 2003: Dim arr0(3) As Integer, arr1() As Integer = {1, 2, 3}; arr1.CopyTo(arr0, 3); MsgBox(arr0(2).ToString) zeigt '3'?

Dein Code in VB.NET 2003 funktioniert so nicht wie beschrieben. Hier die wichtigsten Punkte dazu: 1. **Array-Deklaration und Initialisierung** ```vb.net Dim arr0(3) As Integer Dim arr1() A... [mehr]

Wie kann man in VB.NET 2003 ein Array mit mehreren Werten initialisieren?

In VB.NET 2003 kannst du ein Array wie folgt mit Werten initialisieren: ```vb Dim arr(5) As Integer arr(0) = 1 arr(1) = 2 arr(2) = 3 arr(3) = 4 arr(4) = 5 arr(5) = 6 ``` Oder direkt bei der Deklarat... [mehr]

Ist in VB.NET 2003 me.AddOwnedForm(xxx) dasselbe wie xxx.Owner = me?

Nein, in VB.NET 2003 ist `Me.AddOwnedForm(xxx)` **nicht** dasselbe wie `xxx.Owner = Me`. **Unterschiede:** - `Me.AddOwnedForm(xxx)` Diese Methode fügt das Formular `xxx` zur Liste der von `... [mehr]

Kann ich mit VB.NET 2003 aus der Owner-Form eine Sub in einer geöffneten Owned-Form aufrufen?

Ja, das ist möglich. In VB.NET 2003 kannst du von der Owner-Form aus auf Methoden (Subs) einer Owned-Form zugreifen, sofern du eine Referenz auf die Instanz der Owned-Form hast und die Methode `P... [mehr]

Wie kann ich in VB.NET 2003 aus einer Ownerform Daten in einer geöffneten Ownedform ändern?

Um in VB.NET 2003 aus einer Owner-Form (Besitzer-Form) auf eine bereits geöffnete Owned-Form (besessene Form) zuzugreifen und deren Daten zu ändern, gehst du wie folgt vor: **1. OwnedForm r... [mehr]

Wie kehrt man in VB.NET 2003 die Reihenfolge der Zeilen eines ListView um?

Um in VB.NET 2003 die Reihenfolge der Zeilen (Items) eines ListView-Steuerelements umzukehren, kannst du die Items in eine Liste kopieren, diese umkehren und dann das ListView neu befüllen. Hier... [mehr]