Rubrik: Oberfläche · Fenster | VB-Versionen: VB2005, VB2008 | 15.12.08 |
Eine eigene Titelleiste für .NET-Anwendungen Dieser Tipp zeigt eine Möglichkeit, wie man seine eigene Titelleiste für .NET Anwendungen erstellen kann. | ||
Autor: Florian Kolb | Bewertung: | Views: 17.621 |
www.fk-freeware.de.vu | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Dieser Tipp ist für alle, die mal etwas anderes ausprobieren wollen: eine eigene Titelleiste.
Erst mal müssen wir die normale Titelleiste wegbekommen. Das geht ganz einfach: Die Eigenschaft "FormBorderStyle" der Form auf "None" stellen.
Damit wir aber auch eine neue Titelleiste haben, muss noch ein passendes "Bild" in die obere Ecke der Anwendung, also: ein Panel-Control mit dem Namen "Title" auf die Form, das Hintergrundbild des Panels mit dem Bild versehen und fertig.
Was aber muss die Titelleiste eigentlich können? Sie muss das gesamte Fenster verschieben, wenn man es mit der Maus zieht. Also muss dieser Code am Anfang definiert werden:
Public Class Form1 ' API-Funition zum Verschieben des Fensters Private Declare Function ReleaseCapture _ Lib "user32" () As Integer Private Declare Function SendMessage _ Lib "user32" Alias "SendMessageA" ( _ ByVal hwnd As Integer, _ ByVal wMsg As Integer, _ ByVal wParam As Integer, _ ByRef lParam As Object) As Integer Private Const WM_NCLBUTTONDOWN = &HA1 Private Const HTCAPTION = 2
Jetzt muss für die Titelleiste, also den Panel "Title", nur noch ein MouseDown-Event deklariert werden, damit man das Fenster auch verschieben kann:
Private Sub Title_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles Title.MouseDown Call ReleaseCapture() SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN, HTCAPTION, 0) End Sub
End Class
Damit der Benutzer die Anwendung schließen und minimieren kann, wäre es natürlich gut, zwei Buttons zu definieren. Am Ende noch den Namen Ihres Programms auf den Panel "Title" geschrieben und fertig!