Benutzer mit den meisten Antworten
Fenster (graduell) ausblenden lassen

Frage
-
Hallo,
ich möchte ein Fenster graduell ausblenden lassen. Also habe ich einen Timer genommen und nach jedem "Ticken" sinkt die Eigenschaft "Opacity" um 10 %. Nur leider funktioniert dies nicht mit meinem bisherigem Code:
Public Class Form1 Dim LoadApp As Integer = 1 Dim showWindow As Integer = 0 Dim wOpacity As Integer = 1 Private Sub Timer1_LoadApp_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1_LoadApp.Tick If LoadApp = 1 Then lblLoadApp.Text = "Anwendung wird geladen" LoadApp = LoadApp + 1 ElseIf LoadApp = 2 Then lblLoadApp.Text = lblLoadApp.Text & "." LoadApp = LoadApp + 1 ElseIf LoadApp = 3 Then lblLoadApp.Text = lblLoadApp.Text & "." LoadApp = LoadApp + 1 ElseIf LoadApp = 4 Then lblLoadApp.Text = lblLoadApp.Text & "." LoadApp = 1 Else LoadApp = 1 End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1_LoadApp.Start() tmr_ShowWindow.Start() End Sub Private Sub tmr_ShowWindow_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr_ShowWindow.Tick If showWindow = 5 Then tmr_opacity.Start() tmr_ShowWindow.Stop() Else showWindow = showWindow + 1 End If End Sub Private Sub tmr_opacity_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr_opacity.Tick If wOpacity = 1 Then Me.Opacity = 1.0 wOpacity = +1 ElseIf wOpacity = 2 Then Me.Opacity = 0.9 wOpacity = +1 ElseIf wOpacity = 3 Then Me.Opacity = 0.8 wOpacity = +1 ElseIf wOpacity = 3 Then Me.Opacity = 0.7 wOpacity = +1 ElseIf wOpacity = 4 Then Me.Opacity = 0.6 wOpacity = +1 ElseIf wOpacity = 5 Then Me.Opacity = 0.5 wOpacity = +1 ElseIf wOpacity = 6 Then Me.Opacity = 0.4 wOpacity = +1 ElseIf wOpacity = 7 Then Me.Opacity = 0.3 wOpacity = +1 ElseIf wOpacity = 8 Then Me.Opacity = 0.2 wOpacity = +1 ElseIf wOpacity = 9 Then Me.Opacity = 0.1 wOpacity = +1 ElseIf wOpacity = 10 Then Me.Opacity = 0.0 wOpacity = +1 Else Me.Close() End If End Sub End Class
(ab Zeile 33)
Wenn ich das Programm ausführe, läuft das Programm einfach weiter, obwohl es ja eigentlich nach 5 Sekunden sich ausblenden sollte.
Weiß vielleicht jemand, wo der Fehler ist, oder wie man das anders machen könnte?
Björn
Antworten
-
Hallo Björn,
ich möchte ein Fenster graduell ausblenden lassen.
Dein Ansatz schaut mir unnötig kompliziert aus. Hier mal eine einfache Variante, bei der das Fenster beim Laden langsam ein- wird und beim Schließen langsam ausgeblendet wird. Wichtig ist hier das Schließen durch den User abzufangen, damit auch Gelegenheit bleibt das Fenster auszublenden, wenn er das Fenster über die Schließen Schaltfläche (X) schließt. Sonst wird das Fenster gleich geschlossen ohne dass der Timer hier aktiv wird:
Public Class Form1 Private m_Loading As Boolean Private m_Unloading As Boolean Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load m_Loading = True Me.Opacity = 0 Timer1.Interval = 10 Timer1.Enabled = True End Sub Private Sub Form1_FormClosing(ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs _ ) Handles Me.FormClosing If e.CloseReason = CloseReason.UserClosing Then If Not m_Unloading Then e.Cancel = True Timer1.Enabled = True End If End If End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timer1.Tick If m_Loading Then If Me.Opacity >= 1 Then m_Loading = False Timer1.Enabled = False Else Me.Opacity += 0.05 End If Else If Me.Opacity <= 0 Then m_Unloading = True Me.Close() Else Me.Opacity -= 0.05 End If End If End Sub End Class
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort vorgeschlagen Robert Breitenhofer Mittwoch, 13. Oktober 2010 13:18
- Als Antwort markiert Robert Breitenhofer Dienstag, 19. Oktober 2010 09:30