共用方式為


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
public class Notification extends Component

備註

此類別 (Class) 提供 Windows CE 告知功能的 Managed 實作。只有 Pocket PC 才支援此類別。

您可建立告知 (Notification),並依需要使用 Visible 屬性 (Property) 來顯示它們。InitialDuration 屬性設定初次顯示訊息提示的時間。如果將 InitialDuration 設定為零,且將 Visible 設為 true,則不會出現訊息提示,但可在標題列中看到其圖示,只要按一下即可重新啟動。只要顯示或隱藏提示時 (不論是由程式設定 Visible 屬性還是透過使用者介面的互動),都會發生 BalloonChanged 事件。

除了純文字外,也可在訊息提示中建立含 HTML 內容的使用者告知。HTML 是透過 Pocket PC HTML 控制項予以呈現,且使用 Response 屬性,即可透過剖析 ResponseSubmittedEventArgs 類別所提供的回應字串,來回應 HTML 表單中的值。

Cmd:2 識別項

識別項 "cmd:2" 在 Windows CE 中有特殊的用途,且是用來關閉告知。如果 cmd:2 是 HTML 按鈕的名稱或訊息提示中的其他項目,則不會引發 ResponseSubmitted 事件。系統會關閉告知,但會將其圖示放在標題列上,以便稍後再予以回應。

注意事項:

如果連結或項目的名稱為 "cmd:n" (其中 n 是任何整數),便不會引發 ResponseSubmitted 事件。然而,建議只使用 cmd:2 做為關閉告知的識別項。

範例

下列程式碼範例示範如何顯示告知,以及如何使用訊息提示中的 HTML 項目來收集使用者輸入。此範例使用按鈕來顯示告知;但告知通常都是事件或處理序 (例如計時器) 的結果。

此範例的案例是用來確認將資料下載到裝置的告知。訊息提示具有下列項目:

  • SELECT 清單

  • 超連結 (Hyperlink)

  • 核取方塊

  • 送出按鈕

  • 使用 cmd:2 識別項命名的按鈕

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("&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'>")
         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("&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'>");
                    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();
        }
    }
}

繼承階層架構

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      Microsoft.WindowsCE.Forms.Notification

執行緒安全

這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。並非所有的執行個體成員都是安全執行緒。

平台

Windows Mobile for Pocket PC

.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求

版本資訊

.NET Compact Framework

支援版本:3.5、2.0

請參閱

參考

Notification 成員

Microsoft.WindowsCE.Forms 命名空間

其他資源

HOW TO:傳送通知