Feedback

C# - Fenster Flashing

Veröffentlicht von am 14.12.2007
(1 Bewertungen)
Mithilfe dieser Klasse, können Sie Ihr eigenes Fenster + den Button in der Taskleiste, in einem Periodischen Zeitinterval, aufblinken lassen.
Zusätzlich können Sie sich auch noch, an ein Event dranhängen und noch etwas eigenes dazu zu Programmieren

Beispiels weise bei einer längeren Aktion in der der User sogar das Fenster minimieren könnte.

Dieses blinken in der Taskleite könnte die Aufmerksamkeit des User wieder auf das Programm lenken.

GFU-Schulungen  [Anzeige]

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

ASP.NET Core Server- und Client-Programmierung

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

#region Using
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices; 
#endregion

namespace Toolset {
    #region Beschreibung
    /// <summary>
    /// Mithilfe dieser Klasse, können Sie Ihr eigenes Fenster + den Button in der Taskleiste, in einem Periodischen 
    /// Zeitinterval, aufblinken lassen.
    /// Zusätzlich können Sie sich auch noch, an ein Event dranhängen und noch etwas eigenes dazu zu Programmieren
    /// </summary>
    /// <example>
    /// <code lang="C#">
    /// private Toolset.WindowFlasher flasher
    /// //Innerhalb einer Form Klassem zb weil eine längere Arbeitsphase abgeschlossen ist und das Fenster 
    /// //in der Zwischenzeit minimiert wurde
    /// private void StartWindowFlasher(){
    ///     flasher = new Toolset.WindowFlasher(this, 1000);
    ///     flasher.StartFlashing();
    ///     this.Activated += new System.EventHandler(this.Form1_Activated);
    /// }
    /// private void Form1_Activated(object sender, EventArgs e) {
    ///     if (flasher != null && flasher.IsActive) {
    ///         flasher.StopFlashing();
    ///         this.Activated -= this.Form1_Activated;
    ///     }
    /// }
    /// </code>
    /// </example> 
    #endregion
    public class WindowFlasher {
        #region Event
        /// <summary>
        /// Stellt den Typ der Methode dar, die das Ereigniss behandelt.
        /// </summary>
        public delegate void WindowFlashHandler(Object sender, EventArgs ea);
        /// <summary>
        /// Tritt bei jedem Tick auf.
        /// </summary>
        public event WindowFlashHandler WindowFlashed; 
        #endregion

        #region Private Felder
        private Timer timer;
        private Boolean isActive; 
        #endregion

        #region Property
        /// <summary>
        /// Gibt an ob der Timer läuft oder ob er bereits gestoppt wurde.
        /// </summary>
        public Boolean IsActive {
            get {
                return isActive;
            }
        } 
        #endregion

        #region DllImport
        [DllImport("user32.dll")]
        static extern long FlashWindow(IntPtr hwnd, long invert); 
        #endregion

        #region konstruktor
        /// <summary>
        /// Initialisiert eine neue Instanz der MultiClipboard Klasse.
        /// </summary>
        /// <param name="window">die jeweilige Form die Blicken soll</param>
        /// <param name="intervalInMs">ein Interval in ms, in welchen abstand die Form Blincken soll</param>
        public WindowFlasher(Form window, int intervalInMs) {
            IntPtr windowHwnd = window.Handle;
            timer = new Timer();
            timer.Interval = intervalInMs;
            timer.Tick += new EventHandler(delegate(Object sender, EventArgs e) { long l = FlashWindow(windowHwnd, 1); if (WindowFlashed != null) WindowFlashed(window, new EventArgs()); });
        } 
        #endregion

        #region Destruktor
        /// <summary>
        /// aufräumen
        /// </summary>
        ~WindowFlasher() {
            WindowFlashed = null;
            this.StopFlashing();
            timer = null;
        }
        #endregion

        #region Methoden
        /// <summary>
        /// Startet den Flasher Vorgang
        /// </summary>
        public void StartFlashing() {
            if (!isActive) {
                timer.Start();
                isActive = true;
            }
        }

        /// <summary>
        /// Stoppt den Flasher vorgang
        /// </summary>
        public void StopFlashing() {
            if (isActive) {
                isActive = false;
                timer.Stop();
            }
        } 
        #endregion
    }
}

1 Kommentare zum Snippet

Silerra schrieb am 06.09.2010:
Cooles Code und für meinem Bereich irgendwie wichtig. Jedoch kommt eine Meldung PInokeStackImbalance wenn ich das Code zum Einsatz bringe.
 

Logge dich ein, um hier zu kommentieren!