Hallo,
ich erstelle mir gerade ein neues Programm und möchte dieses ohne den normalen Rand haben. Dazu habe ich den Borderstyle der Form auf None gesetzt.
Ebenso verwende ich ein Notifyicon um es im Tray anzuzeigen. Mein Problem ist jetzt, dass die Form immer kleiner wird, nachdem ich sie wieder aus dem Tray aufrufe.
Mein Code:
Spoiler anzeigen
Das Problem hängt wohl damit zusammen, dass FormBorderstyle.None irgendetwas ändert, so dass das mit dem Minimieren nicht mehr richtig funktioniert. Kann das leider nicht so genau beschreiben, weil mir dazu das Fachwissen fehlt. Angeblich soll jedoch der folgende Snippet das Problem beseitigen, nur habe ich keine Ahnung, wie ich das einbinden sollte.
Spoiler anzeigen
Mein Wunsch ist eine randlose Form, der ich je einen Button zum Schließen und Minimieren manuell hinzufüge. Die Form soll eine feste, nicht veränderliche Größe haben. Des Weiteren möchte ich das Programm mittels Notifyicon in den Traybereich minimieren und beim Doppelklick auf das Icon soll die Form in gleicher Größer etc. wieder angezeigt werden.
Ich hoffe ihr versteht meine Problematik und habt eine Idee/Lösung, wie ich das mit meinem Anforderungen umsetzten könnte. Danke!
ich erstelle mir gerade ein neues Programm und möchte dieses ohne den normalen Rand haben. Dazu habe ich den Borderstyle der Form auf None gesetzt.
Ebenso verwende ich ein Notifyicon um es im Tray anzuzeigen. Mein Problem ist jetzt, dass die Form immer kleiner wird, nachdem ich sie wieder aus dem Tray aufrufe.
Mein Code:
VB.NET-Quellcode
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Me.Close()
- End Sub
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- Me.WindowState = FormWindowState.Minimized
- End Sub
- Private Sub NotifyIcon1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
- Me.WindowState = FormWindowState.Normal
- End Sub
- Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize
- Select Case Me.WindowState 'derzeitigen Fensterstatus abfragen
- Case FormWindowState.Minimized 'Wenn minimiert
- Me.NotifyIcon1.Visible = True 'Icon sichtbar machen
- Me.NotifyIcon1.ShowBalloonTip(2000)
- Me.ShowInTaskbar = False 'Programm aus Task-Leiste entfernen
- Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle 'Formrahmen abändern um es in ALT+TAB unsichtbar zu machen
- Case FormWindowState.Normal 'Wenn normal
- Me.NotifyIcon1.Visible = False 'Icon ausblenden
- Me.ShowInTaskbar = True 'In der Task-leiste wieder anzeigen
- Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None 'Formrahmen abändern um es wieder mit ALT+TAB sichtbar zu machen
- End Select
- End Sub
Das Problem hängt wohl damit zusammen, dass FormBorderstyle.None irgendetwas ändert, so dass das mit dem Minimieren nicht mehr richtig funktioniert. Kann das leider nicht so genau beschreiben, weil mir dazu das Fachwissen fehlt. Angeblich soll jedoch der folgende Snippet das Problem beseitigen, nur habe ich keine Ahnung, wie ich das einbinden sollte.
VB.NET-Quellcode
- Protected Overrides ReadOnly Property CreateParams() As CreateParams
- Get
- Dim cp As CreateParams = MyBase.CreateParams
- Const WS_SYSMENU As Int32 = &H80000
- Const WS_MAXIMIZEBOX As Int32 = &H10000
- Const WS_MINIMIZEBOX As Int32 = &H20000
- cp.Style = cp.Style Or WS_SYSMENU Or WS_MINIMIZEBOX
- cp.Style = cp.Style And Not WS_MAXIMIZEBOX
- Return cp
- End Get
- End Property
Mein Wunsch ist eine randlose Form, der ich je einen Button zum Schließen und Minimieren manuell hinzufüge. Die Form soll eine feste, nicht veränderliche Größe haben. Des Weiteren möchte ich das Programm mittels Notifyicon in den Traybereich minimieren und beim Doppelklick auf das Icon soll die Form in gleicher Größer etc. wieder angezeigt werden.
Ich hoffe ihr versteht meine Problematik und habt eine Idee/Lösung, wie ich das mit meinem Anforderungen umsetzten könnte. Danke!