Suchen

Suche

Aktuell

  • Aktuell
  • Kommentare
  • TagCloud
  • Bis jetzt sind noch keine Kommentare geschrieben worden
 .Net   Suche   ASP.Net   Asp.Net   Beta   Buchtipp   C#   CentOS   CoD   DateTime   DiceFight   Funktion   HTML   HowTo   HttpWebRequest   IIS7   JSON   Konfiguration   LCD   Lighttpd   Linux   Media   Microsoft   Mobile   Mono   MySQL   Oracle   Outlook   PHP   PostgreSQL   Programme   Quake3   RC   RealURL   SMTPE   SVN   Server   Snippet   TYPO3   Timeout   Treiber   Tutorial   USB   Vista   WebClient   Windows   bauer-martin.com   bm_chart   ffmpeg   x64 

Randnotiz

W3C

Valid XHTML Valid CSS

Tutorials, .Net - 20.01.2010 18:32 - Alter: 53 days
- Keine Kommentare

C#: Outlook like Pop-up Alert

Tags: .Net, C#, Outlook Pop-up Alert

Jeder kennt die Outlook-Benachrichtigungen am rechten unten Bildschirmrand wenn man eine neue Mail erhält. Leider gibt es im .Net-Framework kein fertiges Control, welches genau die gleiche Funktionalität bietet. Jedoch kann man mit wenigen Zeilen Code sich ein eigenes solches Control schreiben.

Im Prinzip verwenden wir einfach ein normales Windows Forms ohne Rand (ShowInTaskBar = false, FormBorderStyle =none, TopMost = true) und bewegen dieses von unten nach oben.

Dazu benötigen wir 3 verschiedene Timer:

//
// _timerLoad
//
this._timerLoad.Enabled = true;
this._timerLoad.Interval = 10;
this._timerLoad.Tick += new System.EventHandler(this._timerLoad_Tick);
//
// _timerHide
//
this._timerHide.Interval = 10;
this._timerHide.Tick += new System.EventHandler(this._timerHide_Tick);
//
// _timerShown
//
this._timerShown.Interval = 3000;
this._timerShown.Tick += new System.EventHandler(this._timerShown_Tick);

_timerLoad regel das einblenden, _timerHide das ausblenden und _timerShow dient dazu, das Ausblenden nach 3 Sekunden zu starten.

Im Load Ereignis des Forms müssen wir dann die Form Positionieren:

_x = Screen.GetWorkingArea(this).Width;
_y = Screen.GetWorkingArea(this).Height;
Location = new Point(_x - Width, _y + Height);

_timerLoad.Enabled = true;
_timerLoad.Start();

Danach die 3 Timer-Events zum ein und ausblenden:

/// <summary>
/// Form einblenden
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void _timerLoad_Tick(object sender, EventArgs e)
{
  int i = Location.Y;

  if (i > _y - Height)
  {
    Location = new Point(_x - Width, i - 8);
  }
  else
  {
    _timerLoad.Stop();
    _timerLoad.Enabled = false;

    _timerShown.Start();
    _timerShown.Enabled = true;
  }
}

/// <summary>
/// Warten und dann ausblenden
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void _timerShown_Tick(object sender, EventArgs e)
{
  _timerHide.Enabled = true;
  _timerHide.Start();
}

/// <summary>
/// Form ausblenden
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void _timerHide_Tick(object sender, EventArgs e)
{
  int i = Location.Y;

  if (i < _y)
  {
    Location = new Point(_x - Width, i + 8);
  }
  else
  {
    _timerHide.Stop();
    _timerHide.Enabled = false;
    Close();
  }
}



Blink del.icio.us Digg Furl Google Simpy Spurl Technorati Yahoo

Kommentare

  • Bis jetzt sind noch keine Kommentare geschrieben worden

Kommentar schreiben

Ins Gästebuch eintragen
CAPTCHA Bild zum Spamschutz