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)
Syntax
'Declaration
Public Class Notification _
Inherits Component
'Usage
Dim instance As Notification
public class Notification : Component
public ref class Notification : public Component
type Notification =
class
inherit Component
end
Remarks
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.
Note
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.
Examples
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
Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports Microsoft.WindowsCE.Forms
Imports System.Reflection
Imports System.Text
Imports System.IO
Public Class Form1
Inherits System.Windows.Forms.Form
Private WithEvents Button1 As System.Windows.Forms.Button
Private StatusBar1 As System.Windows.Forms.StatusBar
Private WithEvents Notification1 As Microsoft.WindowsCE.Forms.Notification
Public Sub New()
InitializeComponent()
ConfigNotification()
StatusBar1.Text = ""
' Display the OK button for closing the application.
Me.MinimizeBox = False
End Sub
Protected Overrides Sub Dispose(disposing As Boolean)
MyBase.Dispose(disposing)
End Sub
Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button()
Me.StatusBar1 = New System.Windows.Forms.StatusBar()
Me.SuspendLayout()
'
' Button1
'
Me.Button1.Location = New System.Drawing.Point(6, 134)
Me.Button1.Name = "Button1"
Me.Button1.TabIndex = 20
Me.Button1.Text = "Notify"
'
' StatusBar1
'
Me.StatusBar1.Location = New System.Drawing.Point(0, 246)
Me.StatusBar1.Name = "StatusBar1"
Me.StatusBar1.Size = New System.Drawing.Size(240, 22)
Me.StatusBar1.Text = ""
'
' Form1
'
Me.ClientSize = New System.Drawing.Size(240, 268)
Me.Controls.Add(StatusBar1)
Me.Controls.Add(Button1)
Me.Name = "Form1"
Me.Text = "Notify Demo"
Me.ResumeLayout(False)
End Sub
Shared Sub Main()
Application.Run(New Form1())
End Sub
Private Sub ConfigNotification()
' Create a Notification.
Notification1 = New Microsoft.WindowsCE.Forms.Notification()
Try
'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.
Dim asm As [Assembly] = [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.
Dim HTMLString As New StringBuilder()
HTMLString.Append("<html><body>")
HTMLString.Append("<font color=""#0000FF""><b>Data ready to download</b></font>")
HTMLString.Append(" <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'>")
HTMLString.Append("</body></html>")
' Set the Text property to the HTML string.
Notification1.Text = HTMLString.ToString()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
' Clicking the button creates a notification
' that initally displays for 20 seconds.
Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Notification1.InitialDuration = 20
Notification1.Visible = True
StatusBar1.Text = ""
End Sub
' You can use the BalloonChanged event
' created by tracking each time the notification is made visible.
Private Sub OnBalloonChanged(obj As Object, _
balevent As BalloonChangedEventArgs) Handles Notification1.BalloonChanged
If balevent.Visible = True Then
' You can add code here to add
' functionality such as user interface
' changes that should occur when
' the notification is displayed.
End If
End Sub
' When a ResponseSubmitted event occurs, this event handler
' parses the response to determine values in the HTML form.
Private Sub OnResponseSubmitted(obj As Object, _
resevent As ResponseSubmittedEventArgs) Handles Notification1.ResponseSubmitted
' Use a StringBuilder to create a log of the response.
Dim LogResponse As 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" Then
Dim choice As Integer = Convert.ToInt32(resevent.Response.Substring(13, 1))
Select Case choice
Case 0
LogResponse.Equals("submit")
Case 1
LogResponse.Equals("opt 1")
Case 2
LogResponse.Equals("opt 2")
Case 3
LogResponse.Equals("opt 3")
Case 4
LogResponse.Equals("opt 4")
End Select
' 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") Then
LogResponse.Equals("checkbox")
End If
' If the user clicked the settings link,
' log the response. This example could display
' a dialog box by activating another form.
ElseIf resevent.Response = "settings" Then
' 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
End If
' Display the response on the status bar.
StatusBar1.Text = LogResponse.ToString() + " HTML: " + resevent.Response.ToString()
End Sub
End Class
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()
{
InitializeComponent();
ConfigNotification();
statusBar1.Text = "";
// Display the OK button for closing the application.
this.MinimizeBox = false;
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.statusBar1 = new System.Windows.Forms.StatusBar();
this.SuspendLayout();
//
// 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.Controls.Add(this.statusBar1);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Notify Demo";
this.ResumeLayout(false);
}
static void Main()
{
Application.Run(new Form1());
}
private void ConfigNotification()
{
// Create a Notification.
notification1 = new Microsoft.WindowsCE.Forms.Notification();
try
{
// 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("<html><body>");
HTMLString.Append("<font color=\"#0000FF\"><b>Data ready to download</b></font>");
HTMLString.Append(" <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'>");
HTMLString.Append("</body></html>");
// 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)
{
MessageBox.Show(ex.Message);
}
}
// 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:
LogResponse.Equals("submit");
break;
case 1:
LogResponse.Equals("opt 1");
break;
case 2:
LogResponse.Equals("opt 2");
break;
case 3:
LogResponse.Equals("opt 3");
break;
case 4:
LogResponse.Equals("opt 4");
break;
}
// 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"))
LogResponse.Equals("checkbox");
}
// 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();
}
}
}
Inheritance Hierarchy
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
Microsoft.WindowsCE.Forms.Notification
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Platforms
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.
Version Information
.NET Compact Framework
Supported in: 3.5, 2.0
See Also
Reference
Microsoft.WindowsCE.Forms Namespace