Notification Class

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

Implements Windows CE functionality for displaying and responding to user notifications.

Namespace:  Microsoft.WindowsCE.Forms
Assembly:  Microsoft.WindowsCE.Forms (in Microsoft.WindowsCE.Forms.dll)

public class Notification : Component

This class provides a managed implementation of the Windows CE notification functions. This class is supported only on the Pocket PC.

You can create notifications and then display them as needed using the Visible property. The InitialDuration property sets the time the message balloon initially displays. If you set InitialDuration to zero and Visible to true, the message balloon does not appear but its icon is available in the title bar for reactivation when clicked. The BalloonChanged event occurs whenever the balloon is shown or hidden, either programmatically using the Visible property or through user interaction.

In addition to plain text, you can create a user notification with HTML content in the message balloon. The HTML is rendered by the Pocket PC HTML control, and you can respond to values in an HTML form by parsing a response string provided by the ResponseSubmittedEventArgs class, through the Response property.

Cmd:2 Identifier

The identifier "cmd:2" has a special purpose in Windows CE and is used to dismiss notifications. If cmd:2 is the name of an HTML button or other element in a message balloon, the ResponseSubmitted event is not raised. The notification is dismissed, but its icon is placed on the title bar to be responded to at a later time.


If a link or element has a name of "cmd:n", where n is any integer, the ResponseSubmitted event is not raised. However, it is recommended to use only cmd:2 as an identifier for dismissing notifications.

The following code example shows how to display a notification and gather user input using HTML elements in the message balloon. This example uses a button to display the notification; however, notifications usually occur as a result of an event or process, such as a timer.

The scenario for this example is a notification to confirm downloading data to the device. The message balloon has the following elements:

  • SELECT list

  • Hyperlink

  • Check box

  • Submit button

  • Button named with cmd:2 identifier

using System;
using System.Windows.Forms;
using System.Drawing;
using Microsoft.WindowsCE.Forms;
using System.Reflection;
using System.Text;
using System.IO;

namespace notificationtest

    public class Form1 : System.Windows.Forms.Form
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.StatusBar statusBar1;

        private Microsoft.WindowsCE.Forms.Notification notification1;

        public Form1()



            statusBar1.Text = "";

            // Display the OK button for closing the application.
            this.MinimizeBox = false;


        protected override void Dispose(bool disposing)

        private void InitializeComponent()
            this.button1 = new System.Windows.Forms.Button();
            this.statusBar1 = new System.Windows.Forms.StatusBar();
// button1
            this.button1.Location = new System.Drawing.Point(6, 134);
            this.button1.Name = "button1";
            this.button1.TabIndex = 20;
            this.button1.Text = "Notify";
            this.button1.Click += new System.EventHandler(this.button1_Click);
// statusBar1
            this.statusBar1.Location = new System.Drawing.Point(0, 246);
            this.statusBar1.Name = "statusBar1";
            this.statusBar1.Size = new System.Drawing.Size(240, 22);
            this.statusBar1.Text = "";
// Form1
            this.ClientSize = new System.Drawing.Size(240, 268);
            this.Name = "Form1";
            this.Text = "Notify Demo";


        static void Main()
            Application.Run(new Form1());

    private void ConfigNotification()
            // Create a Notification.
            notification1 = new Microsoft.WindowsCE.Forms.Notification();

                    // Provide an icon for the notification to appear in the title bar when dismissed.
                    // Assumes an icon file is compiled with the assembly as an embedded resource.
                   Assembly asm = Assembly.GetExecutingAssembly();
                   notification1.Icon = new Icon(asm.GetManifestResourceStream("notify.ico"),16,16);

                    notification1.Caption = "Notification scenario - data download";

                    // If notification is urgent, set to true.
                    notification1.Critical = false;

                    // Create the text for the notification.
                    // Use a StringBuilder for better performance.
                    StringBuilder HTMLString = new StringBuilder();

                    HTMLString.Append("<font color=\"#0000FF\"><b>Data ready to download</b></font>");
                    HTMLString.Append("&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"settings\">Settings</a>");
                    HTMLString.Append("<br><form method=\"GET\" action=notify>");
                    HTMLString.Append("<SELECT NAME=\"lstbx\">");
                    HTMLString.Append("<OPTION VALUE=\"0\">Start now</OPTION><OPTION VALUE=\"1\">In 1 hr</OPTION>");
                    HTMLString.Append("<OPTION VALUE=\"2\">In 2 hrs</OPTION><OPTION VALUE=\"3\">In 3 hrs</OPTION>");
                    HTMLString.Append("<OPTION VALUE=\"4\">In 4 hrs</OPTION></SELECT>");
                    HTMLString.Append("<input type=checkbox name=chkbx>Notify completion");
                    HTMLString.Append("<br><input type='submit'>");
                    HTMLString.Append("<input type=button name='cmd:2' value='Postpone'>");

                    // Set the Text property to the HTML string.
                    notification1.Text = HTMLString.ToString();

                    // Add event handlers.

                    notification1.BalloonChanged += new BalloonChangedEventHandler(OnBalloonChanged);
                    notification1.ResponseSubmitted += new ResponseSubmittedEventHandler(OnResponseSubmitted);


            catch (Exception ex)


        // Clicking the button creates a notification
        // that initally displays for 20 seconds.
        // A button is used here for demonstration purposes only;
        // normally, a notification is sent in response to another event.  
        private void button1_Click(object sender, System.EventArgs e)
            notification1.InitialDuration = 20;
            notification1.Visible = true;
            statusBar1.Text = "";

        // You can use the BalloonChanged event
        // created by tracking each time the notification is made visible.
        private void OnBalloonChanged(object obj, BalloonChangedEventArgs balevent)
            if (balevent.Visible == true)
                // You can add code here to add 
                // functionality such as user interface 
                // changes that should occur when
                // the notification is displayed.


        // When a ResponseSubmitted event occurs, this event handler
        // parses the response to determine values in the HTML form.
        private void OnResponseSubmitted(object obj, ResponseSubmittedEventArgs resevent)

            // Use a StringBuilder to create a log of the response.
            StringBuilder LogResponse = new StringBuilder();

            // If the response contains the name specified for the action value
            // of the HTML form, in this case "notify," get the value of the
            // selected option from the SELECT list. An example of the
            // response string would be notify?lstbx=0.

            if (resevent.Response.Substring(0, 6) == "notify")
                int choice = Convert.ToInt32(resevent.Response.Substring(13, 1));
                switch (choice)
                    case 0:
                    case 1:
                        LogResponse.Equals("opt 1");
                    case 2:
                        LogResponse.Equals("opt 2");
                    case 3:
                        LogResponse.Equals("opt 3");
                    case 4:
                        LogResponse.Equals("opt 4");
                // If the checkbox in the form is checked, the response
                // string could be as follows: notify?lstbx=0chkbx=on
                // You can determine whether the check box is selected
                // by checking whether the response ends with "on".
                if (resevent.Response.EndsWith("on"))

            // If the user clicked the settings link,
            // log the response. This example could display
            // a dialog box by activating another form.
            else if (resevent.Response == "settings")
                // Display a settings dialog by activating
                // a form named 'Settings':
                // Settings.Activate
                LogResponse.Equals("Postponed by clicking link");

                // The user needs to respond to the notification
                // after checking the settings, so set the
                // InitialDuration and Visible properties so
                // that the icon appears in the title bar.
                notification1.InitialDuration = 0;
                notification1.Visible = true;

            // Display the response on the status bar.
            statusBar1.Text = LogResponse.ToString() + " HTML: " + resevent.Response.ToString();


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Compact Framework

Supported in: 3.5, 2.0