hallo,
hier ein codebeispiel, wie man ein ein- und ausfahrendes fenster realisieren kann.
das ein - bzw. ausfahren hab ich in einen eigenen thread gepackt, um ein hängen der anwendung zu verhindern.
kommentare erwünscht
gruss
mikeb69
hier ein codebeispiel, wie man ein ein- und ausfahrendes fenster realisieren kann.
das ein - bzw. ausfahren hab ich in einen eigenen thread gepackt, um ein hängen der anwendung zu verhindern.
VB.NET-Quellcode
- Imports System.ComponentModel
- Public Class Form1
- Private f As New Form
- Private WithEvents bgw As New BackgroundWorker
- Private ausfahren As Boolean = True
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- bgw.RunWorkerAsync(ausfahren)
- If ausfahren = True Then ausfahren = False Else ausfahren = True
- End Sub
- Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
- 'bgw stoppen falls während des aus oder einfahrens die anwendung geschlossen wird
- If bgw.IsBusy = True Then
- bgw.CancelAsync()
- End If
- End Sub
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- 'borderstyle setzen
- f.FormBorderStyle = Windows.Forms.FormBorderStyle.None
- 'backgroundworker einrichten
- bgw.WorkerReportsProgress = True
- bgw.WorkerSupportsCancellation = True
- 'fenster einrichten
- f.Show()
- f.Size = New Size(0, Me.Height)
- f.Location = New Point(Me.Right, Me.Top)
- End Sub
- Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LocationChanged
- 'fester mitbewegen
- f.Location = New Point(Me.Right, Me.Top)
- End Sub
- Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgw.DoWork
- 'ein und ausfahrbewegung
- Select Case e.Argument
- Case True
- For i As Integer = 0 To 100
- 'aktuelle position ausgeben
- bgw.ReportProgress(i, i)
- 'warten, damit es auf allen cpu gleichschnell läuft
- Threading.Thread.Sleep(20)
- Next
- Case False
- For i As Integer = 100 To 0 Step -1
- 'aktuelle position ausgeben
- bgw.ReportProgress(i, i)
- 'warten, damit es auf allen cpu gleichschnell läuft
- Threading.Thread.Sleep(20)
- Next
- End Select
- End Sub
- Private Sub bgw_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bgw.ProgressChanged
- 'neue größe an das fenster weitergeben
- f.Size = New Size(e.UserState, Me.Height)
- End Sub
- End Class
kommentare erwünscht
gruss
mikeb69