Partager via


Notification, classe

Mise à jour : novembre 2007

Implémente la fonctionnalité de Windows CE permettant d'afficher des notifications d'utilisateur et d'y répondre.

Espace de noms :  Microsoft.WindowsCE.Forms
Assembly :  Microsoft.WindowsCE.Forms (dans Microsoft.WindowsCE.Forms.dll)

Syntaxe

'Déclaration
Public Class Notification _
    Inherits Component
'Utilisation
Dim instance As Notification
public class Notification : Component
public ref class Notification : public Component
public class Notification extends Component

Notes

Cette classe fournit une implémentation managée des fonctions de notification de Windows CE. Elle n'est prise en charge que sur le Pocket PC.

Vous pouvez créer des notifications, puis les afficher selon vos besoins à l'aide de la propriété Visible. La propriété InitialDuration définit l'heure à laquelle la bulle de message s'affiche initialement. Si vous affectez la valeur zéro à InitialDuration et la valeur true à Visible, la bulle de message ne s'affiche pas mais son icône est disponible dans la barre de titre pour une réactivation en cas de sélection. L'événement BalloonChanged se produit chaque fois que la bulle est affichée ou masquée, que ce soit par programme à l'aide de la propriété Visible ou via l'interaction de l'utilisateur.

En plus du texte brut, vous pouvez créer une notification de l'utilisateur avec du contenu HTML dans la bulle de message. Le contenu HTML est rendu par le contrôle HTML du Pocket PC et vous pouvez répondre aux valeurs dans un formulaire HTML en analysant une chaîne de réponse fournie par la classe ResponseSubmittedEventArgs, via la propriété Response.

Identificateur Cmd:2

L'identificateur "cmd:2" a un objectif spécial dans Windows CE et est utilisé pour fermer les notifications. Si cmd:2 est le nom d'un bouton HTML ou d'autre élément dans une bulle de message, l'événement ResponseSubmitted n'est pas déclenché. La notification est fermée, mais son icône est placée sur la barre de titre afin que vous puissiez y répondre plus tard.

Remarque :

Si un lien ou un élément a le nom "cmd:n", où n est un entier, l'événement ResponseSubmitted n'est pas déclenché. Toutefois, il est recommandé d'utiliser uniquement cmd:2 comme identificateur pour fermer des notifications.

Exemples

L'exemple de code suivant montre comment afficher une notification et collecter les entrées d'utilisateur à l'aide d'éléments HTML dans la bulle de message. Cet exemple utilise un bouton pour afficher la notification ; cependant, les notifications se produisent généralement à la suite d'un événement ou d'un processus, tel qu'une minuterie.

Le scénario de cet exemple est une notification permettant de confirmer le téléchargement de données sur le périphérique. La bulle de message contient les éléments suivants :

  • Liste SELECT

  • Lien hypertexte

  • Case à cocher

  • Bouton Envoyer

  • Bouton nommé avec l'identificateur 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();
        }
    }
}

Hiérarchie d'héritage

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

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Plateformes

Windows Mobile pour Pocket PC

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Informations de version

.NET Compact Framework

Pris en charge dans : 3.5, 2.0

Voir aussi

Référence

Membres Notification

Microsoft.WindowsCE.Forms, espace de noms

Autres ressources

Comment : envoyer une notification