白桦的天空

第一次的心动,永远的心痛!
  首页  :: 新随笔  :: 联系 :: 管理

notificationtest

Posted on 2009-04-24 08:48  白桦的天空  阅读(328)  评论(1编辑  收藏  举报
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();
}
}
}
http://msdn.microsoft.com/zh-cn/library/microsoft.windowsce.forms.notification(VS.80).aspx