kann jemand empfehlen bitte einen guten Codebeispiel von vb.net/c# Code, um die Anwendung in der Taskleiste zu setzen, wenn sie minimiert.Wie wird eine .net-Anwendung in die Taskleiste verschoben, wenn sie minimiert wird?
Antwort
eine NotifyIcon Kontrolle zu Ihrem Formular hinzufügen, dann den folgenden Code verwenden:
private void frm_main_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.ShowInTaskbar = false;
this.Hide();
notifyIcon1.Visible = true;
}
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
this.ShowInTaskbar = true;
notifyIcon1.Visible = false;
}
Sie können nicht die ShowInTaskbar Eigenschaft festlegen müssen.
Sie können eine integrierte Steuerung namens NotifyIcon verwenden. Dies erzeugt ein Tray-Icon, wenn es angezeigt wird. @Phillip hat ein Codebeispiel, das etwas vollständig ist.
Es gibt eine Gotcha aber:
Sie müssen Ihre Anwendungen Hauptformular Dispose-Methode außer Kraft setzen Entsorgen auf NotifyIcon anrufen, sonst wird es in Ihrem Fach nach Anwendung beendet bleiben.
public void Form_Dispose(object sender, EventArgs e)
{
if (this.Disposing)
notifyIcon1.Dispose();
}
So ähnlich.
Danke für den fehlenden Teil. – bugBurger
Dies sollte nicht erforderlich sein, wenn Sie das Benachrichtigungssymbol mit dem Designer auf das Formular setzen - das VS-generierte Dispose() ruft components.Dispose() auf, das alle damit erstellten Komponenten als Container entsorgen sollte. –
Sie können dies tun, indem Sie ein NotifyIcon zu Ihrem Formular hinzufügen und das Resize-Ereignis des Formulars verarbeiten. Um von der Ablage zurück zu gelangen, muss das NotifyIcon-Doppelklick-Ereignis ausgeführt werden.
Wenn Sie eine kleine Animation hinzufügen möchten, können Sie dies auch tun ...
1) Fügen Sie das folgende Modul:
Module AnimatedMinimizeToTray
Structure RECT
Public left As Integer
Public top As Integer
Public right As Integer
Public bottom As Integer
End Structure
Structure APPBARDATA
Public cbSize As Integer
Public hWnd As IntPtr
Public uCallbackMessage As Integer
Public uEdge As ABEdge
Public rc As RECT
Public lParam As IntPtr
End Structure
Enum ABMsg
ABM_NEW = 0
ABM_REMOVE = 1
ABM_QUERYPOS = 2
ABM_SETPOS = 3
ABM_GETSTATE = 4
ABM_GETTASKBARPOS = 5
ABM_ACTIVATE = 6
ABM_GETAUTOHIDEBAR = 7
ABM_SETAUTOHIDEBAR = 8
ABM_WINDOWPOSCHANGED = 9
ABM_SETSTATE = 10
End Enum
Enum ABNotify
ABN_STATECHANGE = 0
ABN_POSCHANGED
ABN_FULLSCREENAPP
ABN_WINDOWARRANGE
End Enum
Enum ABEdge
ABE_LEFT = 0
ABE_TOP
ABE_RIGHT
ABE_BOTTOM
End Enum
Public Declare Function SHAppBarMessage Lib "shell32.dll" Alias "SHAppBarMessage" (ByVal dwMessage As Integer, ByRef pData As APPBARDATA) As Integer
Public Const ABM_GETTASKBARPOS As Integer = &H5&
Public Const WM_SYSCOMMAND As Integer = &H112
Public Const SC_MINIMIZE As Integer = &HF020
Public Sub AnimateWindow(ByVal ToTray As Boolean, ByRef frm As Form, ByRef icon As NotifyIcon)
' get the screen dimensions
Dim screenRect As Rectangle = Screen.GetBounds(frm.Location)
' figure out where the taskbar is (and consequently the tray)
Dim destPoint As Point
Dim BarData As APPBARDATA
BarData.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(BarData)
SHAppBarMessage(ABMsg.ABM_GETTASKBARPOS, BarData)
Select Case BarData.uEdge
Case ABEdge.ABE_BOTTOM, ABEdge.ABE_RIGHT
' Tray is to the Bottom Right
destPoint = New Point(screenRect.Width, screenRect.Height)
Case ABEdge.ABE_LEFT
' Tray is to the Bottom Left
destPoint = New Point(0, screenRect.Height)
Case ABEdge.ABE_TOP
' Tray is to the Top Right
destPoint = New Point(screenRect.Width, 0)
End Select
' setup our loop based on the direction
Dim a, b, s As Single
If ToTray Then
a = 0
b = 1
s = 0.05
Else
a = 1
b = 0
s = -0.05
End If
' "animate" the window
Dim curPoint As Point, curSize As Size
Dim startPoint As Point = frm.Location
Dim dWidth As Integer = destPoint.X - startPoint.X
Dim dHeight As Integer = destPoint.Y - startPoint.Y
Dim startWidth As Integer = frm.Width
Dim startHeight As Integer = frm.Height
Dim i As Single
For i = a To b Step s
curPoint = New Point(startPoint.X + i * dWidth, startPoint.Y + i * dHeight)
curSize = New Size((1 - i) * startWidth, (1 - i) * startHeight)
ControlPaint.DrawReversibleFrame(New Rectangle(curPoint, curSize), frm.BackColor, FrameStyle.Thick)
System.Threading.Thread.Sleep(15)
ControlPaint.DrawReversibleFrame(New Rectangle(curPoint, curSize), frm.BackColor, FrameStyle.Thick)
Next
If ToTray Then
' hide the form and show the notifyicon
frm.Hide()
icon.Visible = True
Else
' hide the notifyicon and show the form
icon.Visible = False
frm.Show()
End If
End Sub
End Module
2) hinzufügen NotifyIcon zu Ihrem Formular ein fügen Sie den folgenden :
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32() = SC_MINIMIZE Then
AnimateWindow(True, Me, NotifyIcon1)
Exit Sub
End If
MyBase.WndProc(m)
End Sub
Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
AnimateWindow(False, Me, NotifyIcon1)
End Sub
- 1. Wie wird das Besitzerfenster minimiert, wenn ein Modal angezeigt wird?
- 2. Wenn eine nicht verfolgte Datei hinzugefügt wird, wird sie nicht sofort in die Staging-Ebene verschoben?
- 3. Wie wird die Datei gulp-webpack minimiert?
- 4. AudioContext Timing-Probleme, wenn Fenster minimiert wird
- 5. Die Anwendung empfängt kein Ereignis, wenn sie auf die Taskleiste geklickt wird.
- 6. Maximieren Sie die Anwendung in der Taskleiste?
- 7. Wie wird Text verschoben/geändert, wenn Sie auf "Weiter" klicken?
- 8. Wie wird das Fenster ausgeblendet, aber in der Taskleiste angezeigt?
- 9. Bootstrap, warum wird die Position verschoben: der Inhalt wird verschoben und die Zeile nicht gefunden?
- 10. Wie wird die JSON-Ausgabe in Rails minimiert?
- 11. C# So zeigen Sie ein Symbol an, wenn mehrere Fenster in der Taskleiste minimiert werden
- 12. Wird eine Ansicht in eine neue Superansicht verschoben, wird sie automatisch aus der alten Superansicht entfernt?
- 13. Ausblenden() funktioniert nicht, wenn die Anwendung gestartet wird
- 14. Lassen Sie die Anwendung auf die Taskleiste minimieren, wenn auf die Schaltfläche geklickt wird?
- 15. Wie erkenne ich, wenn mein Fenster mit wxPython minimiert wird?
- 16. Wie erkennt man, wenn ein Windows-Formular minimiert wird?
- 17. Wie wird die Fortschrittsanzeige der Taskleiste in UWP gesetzt?
- 18. Wenn Sie schnell auf eine Navigationsleistenschaltfläche klicken, wird die Ansicht mehrfach verschoben
- 19. asp.net Seitenanpassung, wenn Browser-Seite minimiert/wiederhergestellt wird Zustand
- 20. Wie wird "GitLab: API ist nicht erreichbar" gelöst, wenn in ein neues Repository verschoben wird?
- 21. Wie wird mit der Änderung der relativen Bild-URL verfahren, wenn CSS minimiert wird?
- 22. Wie wird die gesamte Seite in XAML (UWP) vertikal verschoben, wenn die Bildschirmhöhe abnimmt?
- 23. C# Beim Schließen der Taskleiste in die Taskleiste minimieren
- 24. WPF ListView reserviert immer noch Platz, wenn es minimiert wird
- 25. UIWebView festlegen Inhalt wird nicht verschoben, wenn die Tastatur angezeigt wird
- 26. Wie wird ein Div nach unten verschoben, wenn HTML-Inhalt über jquery angehängt wird, aber die Bildlaufleiste ausgeblendet wird?
- 27. IE ist zufällig minimiert, wenn ein Link geklickt wird
- 28. Bild wird horizontal verschoben, da der Benutzer horizontal in ipad verschoben wird
- 29. Wie wird eine periodische Aufgabe in die Warteschlange gestellt, wenn sie in Sellerie beendet wird?
- 30. XNA 4.0 - Was passiert, wenn das Fenster minimiert wird?
Dies scheint ein Duplikat http://stackoverflow.com/questions/46918/whats-the-proper-way-to-minimize-to-tray-ac-winforms-app zu sein. –