Notification クラス
[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]
ユーザー通知を表示したり、通知に応答したりするための Windows CE の機能を実装します。
名前空間: Microsoft.WindowsCE.Forms
アセンブリ: Microsoft.WindowsCE.Forms (Microsoft.WindowsCE.Forms.dll 内)
構文
'宣言
Public Class Notification _
Inherits Component
'使用
Dim instance As Notification
public class Notification : Component
public ref class Notification : public Component
type Notification =
class
inherit Component
end
解説
このクラスは、Windows CE の通知機能のマネージ実装を提供します。このクラスは、Pocket PC でのみサポートされています。
通知を作成したら、Visible プロパティを使用して、必要に応じて表示できます。InitialDuration プロパティは、メッセージ バルーンを最初に表示する時期を設定します。InitialDuration に 0 を設定し、Visible に true を設定した場合、メッセージ バルーンは表示されませんが、タイトル バーにアイコンが表示されます。このアイコンをクリックすると、メッセージ バルーンが再びアクティブになります。BalloonChanged イベントは、Visible プロパティでの設定やユーザーとの対話によって、バルーンが表示または非表示にされるたびに発生します。
メッセージ バルーンには、プレーンテキストだけでなく、HTML コンテンツを含むユーザー通知を作成できます。HTML は、Pocket PC の HTML コントロールによって表示されます。また、ResponseSubmittedEventArgs プロパティを使用して、Response クラスによって提供される応答文字列を解析することによって、HTML フォーム内の値に応答できます。
cmd:2 識別子
Windows CE では、"cmd:2" 識別子に特殊な目的があります。この識別子は、通知を消すために使用されます。cmd:2 が、メッセージ バルーンの HTML ボタンまたは他の要素の名前の場合、ResponseSubmitted イベントは発生しません。通知は消されますが、後で応答できるようにタイトル バーにアイコンが配置されます。
注意
リンクまたは要素の名前が "cmd:n" (n は任意の整数) の場合、ResponseSubmitted イベントは発生しません。ただし、通知を消すための識別子としては、cmd:2 だけを使用することをお勧めします。
例
通知を表示し、メッセージ バルーン内の HTML 要素を使用してユーザー入力を収集する方法を、次のコード例に示します。この例では、ボタンを使用して通知を表示していますが、通常、通知はイベントまたは処理 (タイマーなど) の結果として表示されます。
この例のシナリオは、デバイスにデータをダウンロードすることを確認する通知です。メッセージ バルーンには、次の要素が含まれます。
SELECT リスト
Hyperlink
Check box
送信ボタン
cmd:2 識別子で名前が付けられたボタン
Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports Microsoft.WindowsCE.Forms
Imports System.Reflection
Imports System.Text
Imports System.IO
PublicClass Form1
Inherits System.Windows.Forms.Form
PrivateWithEvents Button1 As System.Windows.Forms.Button
Private StatusBar1 As System.Windows.Forms.StatusBar
PrivateWithEvents Notification1 As Microsoft.WindowsCE.Forms.Notification
PublicSubNew()
InitializeComponent()
ConfigNotification()
StatusBar1.Text = ""
' Display the OK button for closing the application.Me.MinimizeBox = FalseEndSubProtectedOverridesSub Dispose(disposing AsBoolean)
MyBase.Dispose(disposing)
EndSubPrivateSub 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)
EndSubSharedSub Main()
Application.Run(New Form1())
EndSubPrivateSub 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 AsNew 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)
EndTryEndSub
' Clicking the button creates a notification ' that initally displays for 20 seconds.PrivateSub Button1_Click(sender AsObject, e As System.EventArgs) Handles Button1.Click
Notification1.InitialDuration = 20
Notification1.Visible = True
StatusBar1.Text = ""EndSub
' You can use the BalloonChanged event ' created by tracking each time the notification is made visible.PrivateSub OnBalloonChanged(obj AsObject, _
balevent As BalloonChangedEventArgs) Handles Notification1.BalloonChanged
If balevent.Visible = TrueThen ' You can add code here to add ' functionality such as user interface ' changes that should occur when ' the notification is displayed.EndIfEndSub
' When a ResponseSubmitted event occurs, this event handler ' parses the response to determine values in the HTML form.PrivateSub OnResponseSubmitted(obj AsObject, _
resevent As ResponseSubmittedEventArgs) Handles Notification1.ResponseSubmitted
' Use a StringBuilder to create a log of the response.Dim LogResponse AsNew 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"ThenDim choice AsInteger = Convert.ToInt32(resevent.Response.Substring(13, 1))
SelectCase 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")
EndSelect ' 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")
EndIf
' 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 = TrueEndIf
' Display the response on the status bar.
StatusBar1.Text = LogResponse.ToString() + " HTML: " + resevent.Response.ToString()
EndSubEndClass
using System;
using System.Windows.Forms;
using System.Drawing;
using Microsoft.WindowsCE.Forms;
using System.Reflection;
using System.Text;
using System.IO;
namespace notificationtest
{
publicclass 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;
}
protectedoverridevoid Dispose(bool disposing)
{
base.Dispose(disposing);
}
privatevoid 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);
}
staticvoid Main()
{
Application.Run(new Form1());
}
privatevoid 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. privatevoid 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.privatevoid 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.privatevoid 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.elseif (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();
}
}
}
継承階層
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
Microsoft.WindowsCE.Forms.Notification
スレッド セーフ
この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。
プラットフォーム
Windows Mobile for Pocket PC
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET フレームワークのシステム要件」を参照してください。
バージョン情報
.NET Compact Framework
サポート対象 : 3.5、2.0
参照
参照
Microsoft.WindowsCE.Forms 名前空間