Sticky Notepad
Add Comment<div align="center"> <table border="0" width="70%" class="outline"> <tr> <td width="50%" class="outline"><b>Download File</b></td> <td width="50%" class="outline"><b>SDK</b></td> </tr> <tr> <td width="50%" class="outline"><a href="../../file/stickynote.zip" class="wbox">stickynote.zip</a> (27kb)</td> <td width="50%" class="outline">Beta1</td> </tr> </table> </div> <p> <span class=wboxheado>Introduction</span><br> I am from Java background and hence I wanted to experiment with writing a program that would run from the "System Tray" of Windows (that's where you have the date displayed) since that's not possible with pure Java. <br> So I have built an application which uses the "TrayIcon" component of WinForms to run the application from the System Tray. </p> <p><span class=wboxheado>Requirements</span><br> 1) .NET SDK beta1 (Note: This example might not run on future versions of the SDK) </p> <p><span class=wboxheado>Point To Remember</span><br> Don't forget to copy "sticky.txt" to the directory in which you will be running the program from. </p> <p><span class=wboxheado>Screen Shot</span><br> <img border="0" src="../../img/stickynotepad.gif" width="207" height="214"><br> Figure 1: Stick Notepad</p> <p><span class=wboxheado>Code</span><br> 1) <i><b>sticky.cs</b> :- The Sticky Notepad</i></p> <table border="0" width="100%" class="code" cellspacing="0" cellpadding="0"> <tr> <td width="100%"> <pre>namespace stickynote { <span class=cmt>//Import the necessary Assemblies</span> using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.WinForms; using System.Data; using System.IO ; <span class=cmt>/// <summary> /// The class to demonstrate a Sticky Pad /// </summary></span> public class sticky : System.WinForms.Form { <span class=cmt>/// <summary> /// Required designer variable. /// </summary></span> private System.ComponentModel.Container components; private System.WinForms.MenuItem menuItem4; private System.WinForms.MenuItem menuItem3; private System.WinForms.MenuItem menuItem2; private System.WinForms.MenuItem menuItem1; private System.WinForms.ContextMenu contextMenu1; <span class=cmt>//TrayIcon is used to place the Application in the System Tray</span> private System.WinForms.TrayIcon StickyNote; private System.WinForms.RichTextBox tbox; <span class=cmt> /// <summary> /// The Constructor /// We Call 2 methods here /// InitilizeComponent - to Initialize the winform /// read - to read the data from the text file /// </summary></span> public sticky() { InitializeComponent(); read(); } <span class=cmt>/// <summary> /// Clean up any resources being used. /// </summary></span> public override void Dispose() { <span class=cmt>//Before Disposing Save the Text</span> save(); this.StickyNote.Dispose(); base.Dispose(); components.Dispose(); } <span class=cmt>/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary></span> private void InitializeComponent() { System.Resources.ResourceManager resources = new System.Resources.ResourceManager (typeof(sticky)); this.components = new System.ComponentModel.Container (); this.tbox = new System.WinForms.RichTextBox (); <span class=cmt>//Code for the context menu</span> this.contextMenu1 = new System.WinForms.ContextMenu (); this.menuItem4 = new System.WinForms.MenuItem (); this.menuItem2 = new System.WinForms.MenuItem (); this.menuItem1 = new System.WinForms.MenuItem (); this.StickyNote = new System.WinForms.TrayIcon (); this.menuItem3 = new System.WinForms.MenuItem (); tbox.AutoWordSelection = true; tbox.Size = new System.Drawing.Size (194, 156); tbox.ContextMenu = this.contextMenu1; tbox.TabIndex = 1; tbox.ScrollBars = System.WinForms.RichTextBoxScrollBars.Vertical; tbox.Dock = System.WinForms.DockStyle.Fill; tbox.CausesValidation = false; tbox.TabStop = false; tbox.BackColor = System.Drawing.Color.Orange; contextMenu1.MenuItems.All = new System.WinForms.MenuItem[4] {this.menuItem1, this.menuItem2, this.menuItem3, this.menuItem4}; menuItem4.Text = "Exit"; menuItem4.Index = 3; menuItem4.Click += new System.EventHandler (this.Exit); menuItem2.Text = "Hide"; menuItem2.Index = 1; menuItem2.Click += new System.EventHandler (this.minimise); menuItem1.Text = "Show"; menuItem1.Index = 0; menuItem1.Click += new System.EventHandler (this.maximise); menuItem3.Text = "Help"; menuItem3.Index = 2; menuItem3.Click += new System.EventHandler (this.helpme); <span class=cmt>//Code for the TrayIcon</span> StickyNote.Text = "StickyNote"; StickyNote.Visible = true; StickyNote.Icon = (System.Drawing.Icon) resources.GetObject ("StickyNote.Icon"); StickyNote.ContextMenu = this.contextMenu1; this.Text = "Sticky Note, By Saurabh Nandu"; this.MaximizeBox = false; this.AutoScaleBaseSize = new System.Drawing.Size (5, 13); this.BorderStyle = System.WinForms.FormBorderStyle.FixedSingle; this.ContextMenu = this.contextMenu1; <span class=cmt>//Set the initial state to minimized</span> this.WindowState = System.WinForms.FormWindowState.Minimized; <span class=cmt>//Do not show in the Task Bar</span> this.ShowInTaskbar = false; this.Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon"); this.CausesValidation = false; <span class=cmt>//Show the WinForm above all other Applications</span> this.TopMost = true; <span class=cmt>//Hide the Control Box (The box containing the //(Maximize, Minimize, and Close buttons)</span> this.ControlBox = false; this.BackColor = System.Drawing.Color.Orange; this.ClientSize = new System.Drawing.Size (194, 156); this.Controls.Add (this.tbox); } <span class=cmt>/// <summary> /// This function is called when "Hide" /// is selected from the context menu /// </summary></span> protected void minimise (object sender, System.EventArgs e) { if(this.Visible) { <span class=cmt>//Hide the Application</span> this.Hide(); } } <span class=cmt>/// <summary> /// This method is called when "Show" /// is selected from the context Menu /// </summary></span> protected void maximise (object sender, System.EventArgs e) { <span class=cmt>//Maximize the Window //Why??? since we are initially setting the WinForms //State to "Minimized" in the constructor</span> this.WindowState = System.WinForms.FormWindowState.Normal; if(!this.Visible) { //If the Window is hidded //Show it this.Show(); } } <span class=cmt>/// <summary> /// Method called when "Help" button clicked /// </summary></span> protected void helpme (object sender, System.EventArgs e) { MessageBox.Show("Sticky Note Made by Saurabh Nandu, saurabh@mastercsharp.com") ; } <span class=cmt>/// <summary> /// Called when "Exit" is selected from the context menu. /// </summary></span> protected void Exit (object sender, System.EventArgs e) { <span class=cmt>//Call the Dispose Method</span> this.Close(); } <span class=cmt>/// <summary> /// This method is called from the destructor (Dispose) /// It saves the Data to the Text File /// </summary></span> protected void save() { <span class=cmt>//Open a File Stream</span> FileStream fout = new FileStream("sticky.txt", FileMode.Open, FileAccess.Write, FileShare.ReadWrite) ; <span class=cmt>//Get a StreamWriter , since its easy to write string with it.</span> StreamWriter sw = new StreamWriter(fout) ; <span class=cmt>//Write the contents for the RichTextBox</span> sw.Write(tbox.Text); <span class=cmt>//Close the Streams</span> sw.Close(); fout.Close(); } <span class=cmt>/// <summary> /// This method is called from the constructor /// It read the text from the Text file /// and displays it in the RichTextBox /// </summary></span> protected void read() { <span class=cmt>//Open the streams to the file</span> FileStream fin = new FileStream("sticky.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite) ; StreamReader tr = new StreamReader(fin) ; <span class=cmt>//Read the data, I use "ReadToEnd" cause with it you //can read the whole file in one shot !</span> tbox.Text = tr.ReadToEnd(); <span class=cmt>//Close the streams</span> tr.Close(); fin.Close(); } <span class=cmt>/// <summary> /// The main entry point for the application. /// </summary></span> public static void Main(string[] args) { Application.Run(new sticky()); } } }</pre> </td> </tr> </table>