Hallo Community,
wer hat es noch nicht gesehen, wenn wir etwas installieren wollen, dunkelt sich der Bildschirm oft ab und es erscheint eine Meldung, die unbedingt beantwortet werden will (meist, ob wir wirklich das Programm installieren wollen).
Was nervig ist, ist ebenso günstig für ein Programm, denn man kann es nicht nur für Meldungen nehmen, man kann auch Dialoge oder anzuzeigende Bilder damit schön in den Vordergrund bringen.
Genau das wollte ich auch haben und habe nach einem Tutorial dafür gesucht aber nur komplizierte und Ellen-Lange Code-Beispiele gefunden (Z. B. HIER). Alle waren darauf aus, auf der Form ein Rechteck zu zeichnen und dieses halbtransparant zu machen.
Ich habe mir nun aber eine andere und vorallem leichtere Methode überlegt.
Ziel:
Wahlweise nur die Hauptform oder den ganzen Bildschirm abdunkeln und eine Form im Vordergrund anzeigen.
Schwierigkeitsgrad:
Anfänger
Erklärung:
Anders als bei den schönen Beispielen hier im Forum zu diesem Thema werden wir nichts zeichnen. (Screenshot im Anhang!)
Wir brauchen für unser Beispiel ersteinmal 3 Formen:
So die Meisten von Eiuh wissen nun auf was ich hinaus möchte.
Zuerst natürlich die Form1: Zieht die Form etwas größer, gebt ihr ein paar Steuerelemente und mindestens einen Button.
Dann nehmen wir uns die Form2 vor: Dort müsst ihr FormBorderStyle auf None setzen, macht sie so groß wie Ihr wollt (aber nicht zu groß, kleiner ist besser) und erstellt zwei Button (einen "OK" und einen "Abbrechen"). Setzt dann TopMost auf true
nun die Form3: Dort setzt ihr auch FormBorderStyle auf None, gebt der Form eine dunkle Farbe (am Besten RGB 64;64;64) und setzt die Opazität auf 80%. Setzt auch hier TopMost auf true
Jetzt kommt der Code:
Wir nehmen also die Form3, welche durch die dunkle Farbe und die Opazität als verdunkeler dient, und rufen Sie auf.
Im Form3_Load() stellt Ihr nun die gewünschte größe der Form ein, nämlich:
Variante1: Nur die Hauptform soll verdunkelt werden.
Variante2: Der ganze Bildschirm soll verdunkelt werden.
In den Button der Form1 schreibt Ihr einfach:
Damit wird erst unser "Verdunkeler" und dann unser Dialog geöffnet.
In den "Abbrechen"-Button der Form2 schreibt Ihr einfach
Damit klappt es bereits, wenn Ihr jetzt noch wollt, dass Form2 in der Mitte der Form1 erscheint, habe ich folgenden Code erstellt:
Nun ist es aber so, dass bei Klick auf Form3 (also unserer Verdunkeler) die Form2 in den Hintergrund gerät, dazu mach Ihr einfach folendes:
Wenn Ihr jetzt noch wollt, dass sich alles bei Verschieben des Hauptfensters mit bewegt (sonst fürden Form2 und Form3 stehen bleiben), dann nehmt noch folgenden Code:
Und damit wären wir am Ende!
Verzeiht mir, dass ich es so "idiotensicher" beschrieben habe, aber ich wollte dass auch Anfänger dies Verstehen und nutzen können!
Viele Grüße
VanDerLars
wer hat es noch nicht gesehen, wenn wir etwas installieren wollen, dunkelt sich der Bildschirm oft ab und es erscheint eine Meldung, die unbedingt beantwortet werden will (meist, ob wir wirklich das Programm installieren wollen).
Was nervig ist, ist ebenso günstig für ein Programm, denn man kann es nicht nur für Meldungen nehmen, man kann auch Dialoge oder anzuzeigende Bilder damit schön in den Vordergrund bringen.
Genau das wollte ich auch haben und habe nach einem Tutorial dafür gesucht aber nur komplizierte und Ellen-Lange Code-Beispiele gefunden (Z. B. HIER). Alle waren darauf aus, auf der Form ein Rechteck zu zeichnen und dieses halbtransparant zu machen.
Ich habe mir nun aber eine andere und vorallem leichtere Methode überlegt.
Ziel:
Wahlweise nur die Hauptform oder den ganzen Bildschirm abdunkeln und eine Form im Vordergrund anzeigen.
Schwierigkeitsgrad:
Anfänger
Erklärung:
Anders als bei den schönen Beispielen hier im Forum zu diesem Thema werden wir nichts zeichnen. (Screenshot im Anhang!)
Wir brauchen für unser Beispiel ersteinmal 3 Formen:
- eine Hauptform - diese wollen wir verdunkeln
- eine Dialogform - diese soll im Vordergrund angezeigt werden
- eine Verdunkelungsform - diese wird unse Hauptform verdunkeln
So die Meisten von Eiuh wissen nun auf was ich hinaus möchte.
Zuerst natürlich die Form1: Zieht die Form etwas größer, gebt ihr ein paar Steuerelemente und mindestens einen Button.
Dann nehmen wir uns die Form2 vor: Dort müsst ihr FormBorderStyle auf None setzen, macht sie so groß wie Ihr wollt (aber nicht zu groß, kleiner ist besser) und erstellt zwei Button (einen "OK" und einen "Abbrechen"). Setzt dann TopMost auf true
nun die Form3: Dort setzt ihr auch FormBorderStyle auf None, gebt der Form eine dunkle Farbe (am Besten RGB 64;64;64) und setzt die Opazität auf 80%. Setzt auch hier TopMost auf true
Jetzt kommt der Code:
Wir nehmen also die Form3, welche durch die dunkle Farbe und die Opazität als verdunkeler dient, und rufen Sie auf.
Im Form3_Load() stellt Ihr nun die gewünschte größe der Form ein, nämlich:
Variante1: Nur die Hauptform soll verdunkelt werden.
VB.NET-Quellcode
- PrivateSub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
- Dim rand = ((form1.Width - form1.ClientSize.Width) / 2) 'linker, rechter und unterer Rand
- Dim rand2 = (((form1.ClientSize.Height + rand) - form1.Height)) 'oberer Rand berechnen
- me.Left = form1.Left + form1.ClientRectangle.Left + rand'Position links
- me.Width = form1.ClientSize.Width'breite der Verdunkelung
- me.Top = form1.Top + form1.ClientRectangle.Top - rand2'Position von oben
- me.Height = form1.ClientSize.Height 'Höhe der Verdunkelung
- EndSub
Variante2: Der ganze Bildschirm soll verdunkelt werden.
In den Button der Form1 schreibt Ihr einfach:
Damit wird erst unser "Verdunkeler" und dann unser Dialog geöffnet.
In den "Abbrechen"-Button der Form2 schreibt Ihr einfach
Damit klappt es bereits, wenn Ihr jetzt noch wollt, dass Form2 in der Mitte der Form1 erscheint, habe ich folgenden Code erstellt:
Nun ist es aber so, dass bei Klick auf Form3 (also unserer Verdunkeler) die Form2 in den Hintergrund gerät, dazu mach Ihr einfach folendes:
Wenn Ihr jetzt noch wollt, dass sich alles bei Verschieben des Hauptfensters mit bewegt (sonst fürden Form2 und Form3 stehen bleiben), dann nehmt noch folgenden Code:
VB.NET-Quellcode
- Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LocationChangedForm3.Left = Me.Left
- Form3.Width = Me.WidthForm3.Height = Me.Height - 27
- Form3.Top = Me.Top + 27Form2.Left = (Me.Width / 2) + Me.Left - (Form2.Width / 2)
- Form2.Top = (Me.Height / 2) + Me.Top - (Form2.Height / 2)
- End Sub
Und damit wären wir am Ende!
Verzeiht mir, dass ich es so "idiotensicher" beschrieben habe, aber ich wollte dass auch Anfänger dies Verstehen und nutzen können!
Viele Grüße
VanDerLars
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VanDerLars“ ()