Pregunta

Quiero mostrar un WinForm en la esquina inferior derecha muy por encima de la bandeja del sistema,

¿Cómo se hace eso? Aquí está mi código:

public static void Notify()
{        
    Rectangle workingArea = Screen.PrimaryScreen.WorkingArea;
    Form fm = new Form();
    fm.ClientSize = new Size(200, 200);
    int left = workingArea.Width - fm.Width;
    int top = workingArea.Height - fm.Height;
    fm.Location = new Point(left, top);
    fm.ShowInTaskbar = false;
    fm.ShowIcon = false;
    fm.MinimizeBox = false;
    fm.MaximizeBox = false;
    fm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
    fm.Text = "Test";
    fm.TopMost = true;
    fm.Show();
}
¿Fue útil?

Solución

Me acaba de intentar esto y que trabajó para mí ( Nota: : este código debe aparecer después El formulario se ha mostrado por primera vez - por ejemplo, se puede ponerlo en Load controlador de eventos del formulario, o simplemente incluirlo después de cualquier llamada a Show):

Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
int left = workingArea.Width - this.Width;
int top = workingArea.Height - this.Height;

this.Location = new Point(left, top);

Ya sea para uso WorkingArea o Bounds depende de lo que entendemos por "sobre": si usted quiere decir "frente a", a continuación, utilizar Bounds, ya que incluye el área que cubre toda la pantalla (incluido el espacio ocupado por la bandeja del sistema ); si usted quiere decir "arriba", a continuación, utilizar WorkingArea, que solo incluye el escritorio del usuario.

También permítanme aclarar que desea que el real forma que se muestra allí, ¿verdad? Si quería un icono en el área de notificación, que es lo que el componente NotifyIcon es para.

Otros consejos

Se olvidó la siguiente:

        fm.StartPosition = FormStartPosition.Manual;

Lo que usted tiene que trabajar a continuación se pone en la barra de tareas, por ejemplo, el lado izquierdo de la pantalla y ejecutar el código en una máquina que tiene la configuración de PPP de vídeo a un valor diferente (como 125). Sólo se puede posicionar con precisión la forma en su evento de carga. No ajuste el tamaño del cliente.

Si usted quiere situar el formulario sobre / en frente de la barra de tareas:

Establecer las formas de propiedad TopMost true. Puede utilizar Screen.PrimaryScreen.Bounds para obtener la resolución de la pantalla a continuación, establecer su posición de forma adecuada.


Si lo que desea es situar el formulario justo por encima de la barra de tareas en la parte inferior derecha, puede hacerlo de la siguiente manera:

En el diseñador de formularios, Goto Properties-> Eventos y añadir el evento Load para el formulario.

Agregue la siguiente:

private void Form1_Load(object sender, EventArgs e)
{
    this.StartPosition = FormStartPosition.Manual;
    int x = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
    int y = Screen.PrimaryScreen.WorkingArea.Height - this.Height;
    this.Bounds = new Rectangle(x, y, this.Width, this.Height);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top