2009-01-20 2 views
9

Ich habe eine Anwendung erstellt, die in der Taskleiste ausgeführt wird. Wenn ein Benutzer auf die Anwendung klickt, wird es angezeigt. Was ich möchte, ist eine ähnliche Funktionalität wie in MSN, wenn sich einer meiner Freunde anmeldet. Offensichtlich ist dies ein Toast-Popup. Ich möchte grundsätzlich von jedem 20 Minuten Toast-Stil aus der Anwendung in der Taskleiste Popup-Popup.Toast Stil Pop-up für meine Anwendung

Meine bestehende Anwendung wird WinForms in C# mit .NET 3.5

Prost geschrieben based

Antwort

21

Das ist ziemlich einfach. Sie müssen nur das Fenster im Offscreen-Bereich einstellen und seine Position animieren, bis es vollständig sichtbar ist. Hier ist ein Beispielcode:

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); 
    } 
} 
+5

T er berücksichtigt nicht mehrere Faktoren: * Taskleiste könnte an jeder Kante des Bildschirms angebracht werden; * User könnte einen sekundären Monitor auf der rechten Seite haben (Ihr Popup-Fenster bei weitem nicht in der Taskleiste Pop-up verursacht. Ich weiß, das ein alter Thread, aber ich wollte es für jemand anderen suchen zu erwähnen, wie ich war. – Geoff

+3

Zusatz zu meinen oben Bemerkung: Auch wenn es einen sekundären Bildschirm wie mit sollte kein Problem sein (wegen der Screen.PrimaryScreen usage) sieht, ermöglicht Win7 nicht primäre Bildschirme in der Taskleiste enthalten, und natürlich konnte die Taskleiste Lage nach wie vor eine beliebige Kante des Bildschirms. Nachsehen [diese Frage] (http://stackoverflow.com/questions/1265379/how-to-find-windows-taskbar-location-and-size) nach einer Antwort auf die richtige Kante zu finden, für die Taskleiste. – Geoff

4

Es gibt Unterstützung für die Benachrichtigung Ballons in Win32 (Ich bin kein .net Programmierer), mit einigen nützlichen Eigenschaften wie old new thing explains.

Es gibt auch eine systemweite semaphor, die Sie sperren sollte mehr als ein Pop-up aus einer beliebigen Anwendung auf einmal erscheinen zu verhindern.

Es gibt ein paar Seiten auf dem Toast-Semaphor auf msdn - the toast semaphor und in broader context of usability. Ich bin auch auf example code gestoßen, um die Ballon-API von C# zu benutzen, während ich hinsehe, kann aber nicht dafür bürgen.

-1

Sie ziehen das Formular rechts aus dem Bildschirm, und erhöhen Sie es dann. Es würde sich nie wirklich in die Desktop-Ansicht erheben. X-Achse ist rechts und links, Y-Achse ist oben und unten. Wenn Sie die X-Achse hinzufügen, wird sie weiter nach rechts verschoben, und wenn Sie sie zur Y-Achse hinzufügen, wird sie weiter nach unten verschoben.