¿alguien puede sugerir un buen código ejemplo del código vb.net/c# para poner la aplicación en la bandeja del sistema cuando se lo minize.cómo poner una aplicación .net en la bandeja del sistema cuando se minimiza?
Respuesta
Agregue un control NotifyIcon a su forma, a continuación, utilizar el siguiente código:
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;
}
Puede que no necesite para establecer la propiedad ShowInTaskbar.
Puede aprovechar un control incorporado llamado NotifyIcon. Esto crea un icono de bandeja cuando se muestra. @Phillip tiene un ejemplo de código que está algo completo.
Hay una Gotcha sin embargo:
debe invalidar sus aplicaciones método de forma Desechar principal para llamar a Dispose en NotifyIcon, de lo contrario se quedará en su bandeja después de salir de la aplicación.
public void Form_Dispose(object sender, EventArgs e)
{
if (this.Disposing)
notifyIcon1.Dispose();
}
Algo así.
Gracias por perderse parte. – bugBurger
Esto no debería ser necesario si coloca el icono de notificación en el formulario utilizando el diseñador: el Dispose() generado por VS llamará a los componentes. Deseche(), que debería eliminar todos los componentes que se crearon con él como contenedor. –
Puede hacer esto agregando un NotifyIcon a su formulario y manejando el evento de cambio de tamaño del formulario. Para volver desde la bandeja, maneje el evento de doble clic de NotifyIcon.
Si desea agregar un poco de animación que puede hacer esto también ...
1) Añadir el siguiente módulo:
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) Añadir un NotifyIcon a su formulario de una añada lo siguiente :
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. ¿La aplicación se minimiza en la bandeja del sistema cuando se hace clic en el botón?
- 2. . Consola .Net Aplicación en la bandeja del sistema
- 3. Poner un programa en la bandeja del sistema al inicio
- 4. Maximizar la aplicación en la bandeja del sistema?
- 5. ¿Cómo coloco una aplicación Java en la bandeja del sistema?
- 6. JavaFX aplicación en la bandeja del sistema
- 7. C# de mensaje hacia adelante cuando la aplicación se minimiza en la bandeja
- 8. Restaurar aplicación desde la bandeja del sistema
- 9. ¿Cómo iniciar la aplicación directamente en la bandeja del sistema? (.NET C#)
- 10. Tkinter: ¿Cómo hacer una aplicación de bandeja del sistema?
- 11. ¿Cómo se inicia la aplicación WinForm minimizada en la bandeja?
- 12. PyQt: Mostrar menú en una aplicación de bandeja de sistema
- 13. ¿Cómo se podría lograr una aplicación de bandeja del sistema en otras plataformas?
- 14. El menú contextual de la bandeja del sistema Qt permanece cuando la aplicación pierde el foco
- 15. Menú contextual del botón derecho en la bandeja del sistema
- 16. ¿Cómo puedo saber si una punta de Globo en la bandeja del sistema se ha cerrado?
- 17. ¿Por qué el uso de memoria de una aplicación .NET parece disminuir cuando se minimiza?
- 18. Cómo escribir una aplicación para la bandeja del sistema en Linux
- 19. Qt QDockWidget (flotante) se minimiza cuando mi MainWindow minimiza
- 20. Ocultar mi programa en la Bandeja del sistema en Windows
- 21. Icono de notificación permanece en la bandeja del sistema en la aplicación Cerrar
- 22. ¿Cómo hacer que una aplicación Windows Forms .NET se muestre como icono de bandeja?
- 23. ¿Ocultar o no ocultar la bandeja del sistema en una aplicación de Windows Phone 7?
- 24. Icono de la bandeja del sistema con C# Console La aplicación no mostrará el menú
- 25. Actualizando iconos de la bandeja del sistema programáticamente
- 26. La manera más fácil de hacer que un programa se minimice en la bandeja del sistema usando .NET 4
- 27. .NET Minimizar en la bandeja Y Minimizar los recursos necesarios
- 28. Cómo minimizar la aplicación de Silverlight a la bandeja del sistema
- 29. Icono de la bandeja del sistema en C++
- 30. ¿Cómo puedo detectar cuando mi ventana se minimiza con wxPython?
Esto parece ser un duplicado de http://stackoverflow.com/questions/46918/whats-the-proper-way-to-minimize-to-tray-ac-winforms-app. –