Condividi tramite


Classe Notification

Aggiornamento: novembre 2007

Implementa la funzionalità di Windows CE per la visualizzazione e la risposta alle notifiche utente.

Spazio dei nomi:  Microsoft.WindowsCE.Forms
Assembly:  Microsoft.WindowsCE.Forms (in Microsoft.WindowsCE.Forms.dll)

Sintassi

'Dichiarazione
Public Class Notification _
    Inherits Component
'Utilizzo
Dim instance As Notification
public class Notification : Component
public ref class Notification : public Component
public class Notification extends Component

Note

Questa classe fornisce una implementazione gestita delle funzioni di notifica di Windows CE. Questa classe è supportata solo per i Pocket PC.

È possibile creare notifiche e visualizzarle in base alle proprie esigenze utilizzando la proprietà Visible. La proprietà InitialDuration consente di specificare la durata della visualizzazione iniziale della finestra del messaggio. Se si imposta la proprietà InitialDuration su zero e la proprietà Visible su true, la finestra del messaggio non viene visualizzata ma la sua icona risulta disponibile sulla barra del titolo e la finestra può essere riattivata facendo clic. L'evento BalloonChanged si verifica quando la finestra viene visualizzata o nascosta a livello di codice mediante la proprietà Visible oppure mediante interazione dell'utente.

È possibile creare notifiche utente con testo semplice oppure con contenuto HTML nella finestra del messaggio. Il rendering del contenuto HTML viene effettuato dal controllo HTML del Pocket PC ed è possibile rispondere ai valori di un modulo HTML analizzando una stringa di risposta fornita dalla classe ResponseSubmittedEventArgs tramite la proprietà Response.

Identificatore cmd:2

L'identificatore "cmd:2" svolge una funzione speciale in Windows CE e viene utilizzato per la chiusura delle notifiche. Se cmd:2 è il nome di un pulsante HTML o di un altro elemento di una finestra di messaggio, l'evento ResponseSubmitted non viene generato. La notifica viene chiusa, ma la relativa icona viene visualizzata sulla barra del titolo, in modo che sia possibile rispondere in un momento successivo.

Nota

Se a un collegamento o a un elemento è associato il nome "cmd:n", dove n è un valore integer, l'evento ResponseSubmitted non viene generato. Si consiglia, tuttavia, di utilizzare solo cmd:2 come identificatore per la chiusura delle notifiche.

Esempi

Nell'esempio di codice riportato di seguito viene illustrato come visualizzare una notifica e raccogliere l'input dell'utente utilizzando elementi HTML nella finestra del messaggio. Nell'esempio viene utilizzato un pulsante per visualizzare la notifica. In genere, tuttavia, le notifiche vengono visualizzate a seguito di un evento o di un processo, ad esempio un timer.

Nell'esempio la notifica conferma il download di dati nel dispositivo. La finestra del messaggio presenta i seguenti elementi:

  • Elenco SELECT

  • Collegamento ipertestuale

  • Casella di controllo

  • Pulsante di invio

  • Pulsante con nome con identificatore 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();
        }
    }
}

Gerarchia di ereditarietà

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

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Piattaforme

Windows Mobile per Pocket PC

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Informazioni sulla versione

.NET Compact Framework

Supportato in: 3.5, 2.0

Vedere anche

Riferimenti

Membri Notification

Spazio dei nomi Microsoft.WindowsCE.Forms

Altre risorse

Procedura: inviare una notifica