[VB.NET] ein Fenster seitlich aus und einfahren

11/06/2011 13:22 P00w#1
Credits: (mikeb69 aus vb-paradise) [Only registered and activated users can see links. Click Here To Register...]

Hey Leute ;D
mikeb69 aus vb-paradise hat einen schönen Code gepostet

Der Code ermöglicht uns eine zweite form hinter der Main Form auszufahren

Code:
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

Was ihr dazu braucht
eine Form eure Haupt Form
und 1 Button
---

Ihr könnt das auch per Timer machen.
einen Timer hinzufügen und
der Code vom Button 1 hin den Timer hauen

Hänge euch auch ein Beispiel dran
---
Ihr könnt auch die Farbe des genarierten Form's ändern
z.B
f.BackColor = Color.Black

Das müsst ihr in die Form1_load schreiben

glg
P00w

[Only registered and activated users can see links. Click Here To Register...]
11/06/2011 16:28 CandyLIke#2
Was das jezt genau bringen?
Nur das sich das aufahrt ...
11/06/2011 16:31 Tojen#3
Quote:
Originally Posted by CandyLIke View Post
Was das jezt genau bringen?
Nur das sich das aufahrt ...
Ist für die Gestaltung ganz nützlich. ;)
11/06/2011 19:10 P00w#4
Ja das is eher dafür gedacht z.B
du willst Credits bei den Programm dabei haben
dann fährt ne zweite Form aus und zeigt deinen Namen etc.

Oder z.B für Optionen
Wenn man auf den Optionen Button drückt fährt neben so ein Teil aus mit den Einstellungen

Is eher dafür gedacht das es besser aussieht ;D
11/07/2011 22:17 ~.ScoiL#5
Sehr nice. :D
11/09/2011 18:24 Muwbi#6
Ich kann mir das iwie nicht so wirklich vorstellen.
Könnte evtl. mal jemand nen Screenshot von so was posten?
Wäre nett, Danke :)
11/09/2011 18:38 Kraizy​#7
Lad es dir doch runter, im bin/Debug bzw bin/Release Ordner gibts die exe auch..
11/09/2011 18:52 mrapc#8
Hey

unter Windows7 gibt es ein paar Anwendungen, die sich bei Doppelklich rechts im Bildschirm verstecken. Hast du da auch einen Code für?
11/09/2011 19:16 Kraizy​#9
Quote:
Originally Posted by mrapc View Post
Hey

unter Windows7 gibt es ein paar Anwendungen, die sich bei Doppelklich rechts im Bildschirm verstecken. Hast du da auch einen Code für?
Meinst du mit rechts unten, dass es minimiert wird und so ein Symbol neben der Uhr angezeigt wird? Wenn ja, dann google mal nach NotifyIcon.
11/10/2011 09:33 P00w#10
Quote:
Originally Posted by mrapc View Post
Hey

unter Windows7 gibt es ein paar Anwendungen, die sich bei Doppelklich rechts im Bildschirm verstecken. Hast du da auch einen Code für?
Weiß leider nicht was du meinst.. -.-
11/10/2011 12:08 mrapc#11
Nein ich weißt auch gerade nicht bei welchem Programm ich das gesehen habe

Also ich versuch es noch einmal zu beschreiben

Es sieht so auf das wenn man Doppelklich oben auf die Form machen wo Auch _ [] X
ist fährt es sich auf dem Desktop nach links weg soweit das nur noch ein kleiner Rand
(Der Zum verändern der Größe des Programms) zu sehen ist.
Macht man da ein Doppelklick drauf taucht das Programm wieder auf.
An sich mit einem Timer umsetzbar nur soll das auch nicht leggen pder buggen wie
der Aufblende modus :D
11/10/2011 14:03 Kraizy​#12
Nimm doch einfach das Beispiel vom 1. Beitrag und passe es an deine Wünsche an..dann wird da auch nichts ruckeln..wie du die Position des Fensters veränderst, weißt du ja hoffentlich. Das ganze noch mit einer Schleife und fertig.
11/15/2011 20:37 Jopsi332#13
ich finds cool danke
11/17/2011 21:19 Jopsi332#14
wenn man während des aus/einfahrens nochmal den button drückt crasht es. vllt. mal mit try versuchen ;)
11/17/2011 21:29 Kraizy​#15
Quote:
Originally Posted by Jopsi332 View Post
wenn man während des aus/einfahrens nochmal den button drückt crasht es. vllt. mal mit try versuchen ;)
Man muss ja nicht alles komplett vorkauen..soll ja nur darstellen, wie es funktioniert. Natürlich musst du es dann noch an deine Wünsche anpassen..