Form schwarz werden lassen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Ninjamon.

    Form schwarz werden lassen

    Hallo liebe VB-Paradise Community,

    ich stehe zur Zeit vor dem Problem, dass ich meine Form, auf welcher sich relativ viele Comboboxen, Labels, Groupboxen und eine Listbox befinden, innerhalb von ca. 1 Sekunde schwarz werden lassen möchte, dieser dann 3 Sekunden pechschwarz bleibt und sich dann langsam wieder zur Originalform wandelt. Ich habe mittlerweile einen Weg gefunden den Hintergrund schwarz werden zu lassen, allerdings bleiben die Comboboxen, die Ränder der Groupboxen und die Listbox in ihrer Originalfarbe (ich denke, dass die Labels sich auch nicht ändern würden, wenn sie eine andere Farbe als schwarz hätten). Kann man meinen Wunsch mit weniger Aufwand lösen, oder müsste ich dann die Farben all dieser Boxen etc. gleichzeitig mit dem Background ändern?


    Mein Code wie er bis jetzt aussieht:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles MyBase.KeyPress
    3. _easterString &= e.KeyChar
    4. If _easterEggs.Contains(_easterString) Then
    5. My.Computer.Audio.Play(My.Resources.Noc_Dark, AudioPlayMode.Background)
    6. For i As Int32 = 0 To 255
    7. Me.BackColor = Color.FromArgb(255, i, i, i)
    8. Me.Refresh()
    9. Threading.Thread.Sleep(10)
    10. Next
    11. Dim sw As New Stopwatch
    12. sw.Start()
    13. Do While sw.ElapsedMilliseconds < 3000
    14. Application.DoEvents()
    15. Loop
    16. For i As Int32 = 255 To 0
    17. Me.BackColor = Color.FromArgb(255, i, i, i)
    18. Me.Refresh()
    19. Threading.Thread.Sleep(10)
    20. Next
    21. _easterString = ""
    22. End If
    23. End Sub
    24. End Class

    Dieser Beitrag wurde bereits 12 mal editiert, zuletzt von „Ninjamon“ ()

    Hey Ninjamon:

    1) Vermeide den My-Namespace, außer für My.Settings und für My.Resources
    2) Application.DoEvents ist auch nicht gut, benutzte dafür Threads --> BackgroundWorker
    3) Int32 --> Integer ;) Wurde mir mal gesagt :o
    4) So wie ich das sehe, springt dein Hintergrund von der eingestellten Farbe auf Schwarz, verläuft dann im 10ms-Takt nach Weiß, dann werden 3sec gewartet, und dann verläuft er wieder von Weiß nach Schwarz, soll das wirklich so ?
    5) Funktioniert die zweite For-Schleife ? Wenn nein, dann fehlt da ein Step -1
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Danke für die Tipps Plexian! es steht jedoch immer noch die Frage im Raum, ob es einen Weg gibt die gesamte Form schwarz zu färben und nicht nur den Background.

    4. Er springt von Grau nach schwarz und danach wieder von schwarz nach weiß (das ganze ist bisher ein Prototyp, daher hab ich noch nicht von schwarz auf grau eingestellt.
    5. Die For Schleifen funktionieren beide.

    Liebe Grüße

    Jan aka. Ninjamon
    Natürlich geht das... vorzugsweise mit WPF, da du bei Windows Forms nur ranzige Methoden findest.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Wenn du unbedingt bei WinForms bleiben willst, fällt mir noch eine Möglichkeit ein: Ein anderes Fenster über das komplette ClientRectangle legen und dann diese über die Property Opacity steuern.

    nafets3646 schrieb:

    Wenn du unbedingt bei WinForms bleiben willst, fällt mir noch eine Möglichkeit ein: Ein anderes Fenster über das komplette ClientRectangle legen und dann diese über die Property Opacity steuern.
    Das ist mir zu halb gar.


    Wieviel Aufwand wäre denn mit WPF nötig, denn meine Form ist eigentlich soweit komplett. Am liebsten wäre mir eine Lösung per Windows Forms, also wenn noch jemand was gutes hat einfach raus damit.^^


    Liebe Grüße

    Jan aka. Ninjamon