Esto es bastante simple. Solo necesita configurar la ventana en el área fuera de la pantalla y animar su posición hasta que esté completamente visible. Aquí es un ejemplo de código:
public partial class Form1 : Form
{
private Timer timer;
private int startPosX;
private int startPosY;
public Form1()
{
InitializeComponent();
// We want our window to be the top most
TopMost = true;
// Pop doesn't need to be shown in task bar
ShowInTaskbar = false;
// Create and run timer for animation
timer = new Timer();
timer.Interval = 50;
timer.Tick += timer_Tick;
}
protected override void OnLoad(EventArgs e)
{
// Move window out of screen
startPosX = Screen.PrimaryScreen.WorkingArea.Width - Width;
startPosY = Screen.PrimaryScreen.WorkingArea.Height;
SetDesktopLocation(startPosX, startPosY);
base.OnLoad(e);
// Begin animation
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
//Lift window by 5 pixels
startPosY -= 5;
//If window is fully visible stop the timer
if (startPosY < Screen.PrimaryScreen.WorkingArea.Height - Height)
timer.Stop();
else
SetDesktopLocation(startPosX, startPosY);
}
}
T Esto no tiene en cuenta varios factores: * La barra de tareas se puede unir a cualquier borde de la pantalla; * El usuario podría tener un monitor secundario a la derecha (haciendo que su ventana emergente no aparezca cerca de la barra de tareas. Sé que este es un hilo antiguo, pero quería mencionarlo para cualquier otra persona que lo mire, como yo. – Geoff
Adición a mi comentario anterior: aunque parece que tener una pantalla secundaria no debería ser un problema (debido al uso de Screen.PrimaryScreen), Win7 permite que las pantallas no primarias contengan la barra de tareas, y por supuesto, la ubicación de la barra de tareas aún podría Sea cualquier borde de la pantalla. Consulte [esta pregunta] (http://stackoverflow.com/questions/1265379/how-to-find-windows-taskbar-location-and-size) para obtener una respuesta para encontrar el borde correcto para la barra de tareas. – Geoff