<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Forms</title><link>http://www.pixvillage.com/blogs/devblog/category/13.aspx</link><description>Articles relating to windowing, especially use of the System.Windows.Forms namespace.</description><managingEditor>Buz &amp; Skup</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Buz &amp; Skup</dc:creator><title>Minimizing a window to the System Tray on a Close event</title><link>http://www.pixvillage.com/blogs/devblog/archive/2005/03/26/174.aspx</link><pubDate>Sat, 26 Mar 2005 12:02:00 GMT</pubDate><guid>http://www.pixvillage.com/blogs/devblog/archive/2005/03/26/174.aspx</guid><wfw:comment>http://www.pixvillage.com/blogs/devblog/comments/174.aspx</wfw:comment><comments>http://www.pixvillage.com/blogs/devblog/archive/2005/03/26/174.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.pixvillage.com/blogs/devblog/comments/commentRss/174.aspx</wfw:commentRss><trackback:ping>http://www.pixvillage.com/blogs/devblog/services/trackbacks/174.aspx</trackback:ping><description>&lt;p&gt;
   A question that .Net programmers does frequently ask is the following : how to 
   minimize a window in the systray when the user clicks the "Close" button ? This 
   post exposes solutions to the various problems this quite simple need implies.
  &lt;/p&gt;
  &lt;p&gt;The first step is to prevent the window to close. This can be done either by 
   handling the &lt;i&gt;Closing&lt;/i&gt; event or by overriding the &lt;i&gt;OnClosing&lt;/i&gt; protected 
   virtual method. For performance and memory consumption reasons, I'd prefer not 
   to use event handlers whenever possible. The code is quite simple since whe 
   only need to cancel the operation, and looks like the following...&lt;/p&gt;
  &lt;!-- OnClosing code --&gt;
  &lt;div style='BORDER-RIGHT:#c0c0c0 1px solid;BORDER-TOP:#c0c0c0 1px solid;MARGIN-LEFT:10pt;BORDER-LEFT:#c0c0c0 1px solid;MARGIN-RIGHT:2pt;BORDER-BOTTOM:#c0c0c0 1px solid'&gt;&lt;div style="FONT-SIZE:10pt;BORDER-BOTTOM:#c0c0c0 1px solid"&gt;&lt;b&gt;
     Code &lt;/b&gt;&lt;a href='javascript:' onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].innerText);alert('Code copied to clipboard');"&gt;
     Copy &lt;/a&gt;
   &lt;/div&gt;
   &lt;div style="FONT-SIZE:15px;OVERFLOW:auto;FONT-FAMILY:'Courier New'"&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt;
     &amp;lt;summary&amp;gt;&lt;br&gt;
     ///&lt;/font&gt;&lt;font color="#008000"&gt; Occurs when the window is requested to be 
     closed.&lt;/font&gt;&lt;br&gt;
    &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;/summary&amp;gt;&lt;br&gt;
     ///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;param name="e"&amp;gt;&lt;/font&gt;&lt;font color="#008000"&gt;The 
     event arguments&lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;br&gt;
    &lt;font color="#0000ff"&gt;protected&lt;/font&gt;&lt;font color="#0000ff"&gt; override&lt;/font&gt;&lt;font color="#0000ff"&gt;
     void&lt;/font&gt; OnClosing(CancelEventArgs e)&lt;br&gt;
    {&lt;div style="MARGIN-LEFT:20pt"&gt;&lt;font color="#008000"&gt;// The window must only be 
      minimized in tray&lt;/font&gt;&lt;br&gt;
     e.Cancel =&lt;font color="#0000ff"&gt; true&lt;/font&gt;;&lt;br&gt;
     MinimizeInTray();&lt;br&gt;
     &lt;br&gt;
     &lt;font color="#0000ff"&gt;base&lt;/font&gt;.OnClosing(e);&lt;/div&gt;
    }&lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- OnClosing code end --&gt;
  &lt;p&gt;... and the &lt;i&gt;MinimizeInTray&lt;/i&gt; method must do the following:&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;
   Minimize the window,
   &lt;li&gt;
    Hide the window item in the taskbar.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;!-- MinimizeInTray code --&gt;
  &lt;div style='BORDER-RIGHT:#c0c0c0 1px solid;BORDER-TOP:#c0c0c0 1px solid;MARGIN-LEFT:10pt;BORDER-LEFT:#c0c0c0 1px solid;MARGIN-RIGHT:2pt;BORDER-BOTTOM:#c0c0c0 1px solid'&gt;&lt;div style="FONT-SIZE:10pt;BORDER-BOTTOM:#c0c0c0 1px solid"&gt;&lt;b&gt;
     Code &lt;/b&gt;&lt;a href='javascript:' onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].innerText);alert('Code copied to clipboard');"&gt;
     Copy &lt;/a&gt;
   &lt;/div&gt;
   &lt;div style="FONT-SIZE:15px;OVERFLOW:auto;FONT-FAMILY:'Courier New'"&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;font color="#0000ff"&gt;
     void&lt;/font&gt; MinimizeInTray()&lt;br&gt;
    {&lt;div style="MARGIN-LEFT:20pt"&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;.ShowInTaskbar =&lt;font color="#0000ff"&gt;
      false&lt;/font&gt;;&lt;br&gt;
     &lt;font color="#0000ff"&gt;this&lt;/font&gt;.WindowState = FormWindowState.Minimized;&lt;/div&gt;
    }&lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- MinimizeInTray code end --&gt;
  &lt;p&gt;Now, supposing that you have a context menu attached to the &lt;i&gt;NotifyIcon&lt;/i&gt; object 
   that represents the systray icon for your application, you can add the 
   following menu items:&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;
    An &lt;i&gt;openMenu&lt;/i&gt; menu item that restores the window,&lt;/li&gt;&lt;/ul&gt;
  &lt;!-- openMenu_Click code --&gt;
  &lt;div style='BORDER-RIGHT:#c0c0c0 1px solid;BORDER-TOP:#c0c0c0 1px solid;MARGIN-LEFT:10pt;BORDER-LEFT:#c0c0c0 1px solid;MARGIN-RIGHT:2pt;BORDER-BOTTOM:#c0c0c0 1px solid'&gt;&lt;div style="FONT-SIZE:10pt;BORDER-BOTTOM:#c0c0c0 1px solid"&gt;&lt;b&gt;
     Code &lt;/b&gt;&lt;a href='javascript:' onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].innerText);alert('Code copied to clipboard');"&gt;
     Copy &lt;/a&gt;
   &lt;/div&gt;
   &lt;div style="FONT-SIZE:15px;OVERFLOW:auto;FONT-FAMILY:'Courier New'"&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;font color="#0000ff"&gt;
     void&lt;/font&gt; openMenu_Click(&lt;font color="#0000ff"&gt;object&lt;/font&gt; sender, 
    System.EventArgs e)&lt;br&gt;
    {&lt;div style="MARGIN-LEFT:20pt"&gt;ShowFromTray();&lt;/div&gt;
    }&lt;br&gt;
    &lt;br&gt;
    &lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;font color="#0000ff"&gt; void&lt;/font&gt; ShowFromTray()&lt;br&gt;
    {&lt;div style="MARGIN-LEFT:20pt"&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;.WindowState = 
     FormWindowState.Normal;&lt;br&gt;
     &lt;font color="#0000ff"&gt;this&lt;/font&gt;.ShowInTaskbar =&lt;font color="#0000ff"&gt; true&lt;/font&gt;;&lt;/div&gt;
    }&lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- openMenu_Click code end --&gt;
  &lt;ul&gt;
   &lt;li&gt;
    And an &lt;i&gt;exitMenu&lt;/i&gt; item that closes the application.&lt;/li&gt;&lt;/ul&gt;
  &lt;!-- exitMenu_Click code --&gt;
  &lt;div style='BORDER-RIGHT:#c0c0c0 1px solid;BORDER-TOP:#c0c0c0 1px solid;MARGIN-LEFT:10pt;BORDER-LEFT:#c0c0c0 1px solid;MARGIN-RIGHT:2pt;BORDER-BOTTOM:#c0c0c0 1px solid'&gt;&lt;div style="FONT-SIZE:10pt;BORDER-BOTTOM:#c0c0c0 1px solid"&gt;&lt;b&gt;
     Code &lt;/b&gt;&lt;a href='javascript:' onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].innerText);alert('Code copied to clipboard');"&gt;
     Copy &lt;/a&gt;
   &lt;/div&gt;
   &lt;div style="FONT-SIZE:15px;OVERFLOW:auto;FONT-FAMILY:'Courier New'"&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;font color="#0000ff"&gt;
     void&lt;/font&gt; exitMenu_Click(&lt;font color="#0000ff"&gt;object&lt;/font&gt; sender, 
    System.EventArgs e)&lt;br&gt;
    {&lt;div style="MARGIN-LEFT:20pt"&gt;Application.Exit();&lt;/div&gt;
    }&lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- exitMenu_Click code end --&gt;
  &lt;p&gt;Note that calling &lt;i&gt;Close()&lt;/i&gt; fails because our &lt;i&gt;OnClosing&lt;/i&gt; method 
   prevents the window to close...&lt;/p&gt;
  &lt;p&gt;Now, we should think that our job is completed. But (yes, there's always a &lt;i&gt;but&lt;/i&gt;
   in programming), what happens if the computer is being shutdown ? The answer is 
   quite simple : our &lt;i&gt;OnClosing&lt;/i&gt; implementation prevents the window to be 
   closed, which prevents the computer to be shutdown...&lt;/p&gt;
  &lt;p&gt;To solve this issue, we need some lightweight Interop :&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;
    First, override the &lt;i&gt;WndProc&lt;/i&gt; virtual method to handle the 
    WM_QUERYENDSESSION message:&lt;/li&gt;&lt;/ul&gt;
  &lt;!-- WndProc code --&gt;
  &lt;div style='BORDER-RIGHT:#c0c0c0 1px solid;BORDER-TOP:#c0c0c0 1px solid;MARGIN-LEFT:10pt;BORDER-LEFT:#c0c0c0 1px solid;MARGIN-RIGHT:2pt;BORDER-BOTTOM:#c0c0c0 1px solid'&gt;&lt;div style="FONT-SIZE:10pt;BORDER-BOTTOM:#c0c0c0 1px solid"&gt;&lt;b&gt;
     Code &lt;/b&gt;&lt;a href='javascript:' onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].innerText);alert('Code copied to clipboard');"&gt;
     Copy &lt;/a&gt;
   &lt;/div&gt;
   &lt;div style="FONT-SIZE:15px;OVERFLOW:auto;FONT-FAMILY:'Courier New'"&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;font color="#0000ff"&gt;
     const&lt;/font&gt;&lt;font color="#0000ff"&gt; int&lt;/font&gt; WM_QUERYENDSESSION = 0x11;&lt;br&gt;
    &lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;font color="#0000ff"&gt; bool&lt;/font&gt; endSessionPending;&lt;br&gt;
    &lt;font color="#0000ff"&gt;
     &lt;br&gt;
     protected&lt;/font&gt;&lt;font color="#0000ff"&gt; override&lt;/font&gt;&lt;font color="#0000ff"&gt; void&lt;/font&gt;
    WndProc(&lt;font color="#0000ff"&gt;ref&lt;/font&gt; Message m)&lt;br&gt;
    {&lt;div style="MARGIN-LEFT:20pt"&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt; (m.Msg == 
     WM_QUERYENDSESSION)&lt;div style="MARGIN-LEFT:20pt"&gt;endSessionPending =&lt;font color="#0000ff"&gt;
       true&lt;/font&gt;;&lt;font color="#0000ff"&gt;&lt;/div&gt;
     base&lt;/FONT&gt;.WndProc(&lt;font color="#0000ff"&gt;ref&lt;/font&gt; m);&lt;/div&gt;
    }&lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- WndProc code end --&gt;
  &lt;ul&gt;
   &lt;li&gt;
    Then, modify the &lt;i&gt;OnClosing&lt;/i&gt; method to handle the event in a different way 
    :&lt;/li&gt;&lt;/ul&gt;
  &lt;!-- OnClosing code --&gt;
  &lt;div style='BORDER-RIGHT:#c0c0c0 1px solid;BORDER-TOP:#c0c0c0 1px solid;MARGIN-LEFT:10pt;BORDER-LEFT:#c0c0c0 1px solid;MARGIN-RIGHT:2pt;BORDER-BOTTOM:#c0c0c0 1px solid'&gt;
   &lt;div style="FONT-SIZE:10pt;BORDER-BOTTOM:#c0c0c0 1px solid" onclick="var i=this.sel,j;for(j=0;j&lt;3;j++)this.childNodes[2+j*2].checked=j==i;if(i==this.selold)return;var sh=new Array('none',''),o=this.parentNode;j=i==0?0:1;this.selold=i;o.childNodes[1].style.display=sh[j];o.childNodes[2].style.display=sh[1-j];o=o.childNodes[1];var h =o.offsetHeight;o.style.height=i==1?'200pt':'';if(i==1 &amp;amp;&amp;amp; o.offsetHeight&gt;h)o.style.height=h;"
    sel="1" selold="1"&gt;&lt;b&gt; Code &lt;/b&gt;&lt;a href='javascript:' onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].innerText);alert('Code copied to clipboard');"&gt;
     Copy &lt;/a&gt;&lt;input type="radio" onclick="parentNode.sel=0" name="e2fab706625143d9a14e7044aa0961b0"
     ID="Radio1" VALUE="Radio1"&gt;Hide&lt;input type="radio" onclick="parentNode.sel=1" name="e2fab706625143d9a14e7044aa0961b0"
     checked ID="Radio2" VALUE="Radio2"&gt;Scroll&lt;input type="radio" onclick="parentNode.sel=2" name="e2fab706625143d9a14e7044aa0961b0"
     ID="Radio3" VALUE="Radio3"&gt;Full&lt;/div&gt;
   &lt;div style="FONT-SIZE:15px;OVERFLOW:auto;FONT-FAMILY:'Courier New';HEIGHT:200px"&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt;
     &amp;lt;summary&amp;gt;&lt;br&gt;
     ///&lt;/font&gt;&lt;font color="#008000"&gt; Occurs when the window is requested to be 
     closed.&lt;/font&gt;&lt;br&gt;
    &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;/summary&amp;gt;&lt;br&gt;
     ///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;param name="e"&amp;gt;&lt;/font&gt;&lt;font color="#008000"&gt;The 
     event arguments&lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;br&gt;
    &lt;font color="#0000ff"&gt;protected&lt;/font&gt;&lt;font color="#0000ff"&gt; override&lt;/font&gt;&lt;font color="#0000ff"&gt;
     void&lt;/font&gt; OnClosing(CancelEventArgs e)&lt;br&gt;
    {&lt;div style="MARGIN-LEFT:20pt"&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt; (endSessionPending)&lt;br&gt;
     {&lt;div style="MARGIN-LEFT:20pt"&gt;&lt;font color="#008000"&gt;// The session is ending.&lt;/font&gt;&lt;br&gt;
      e.Cancel =&lt;font color="#0000ff"&gt; false&lt;/font&gt;;&lt;/div&gt;
     }&lt;br&gt;
     &lt;font color="#0000ff"&gt;else&lt;/font&gt;&lt;br&gt;
     {&lt;div style="MARGIN-LEFT:20pt"&gt;&lt;font color="#008000"&gt;// The window must only be 
       minimized in tray&lt;/font&gt;&lt;br&gt;
      e.Cancel =&lt;font color="#0000ff"&gt; true&lt;/font&gt;;&lt;br&gt;
      MinimizeInTray();&lt;/div&gt;
     }&lt;br&gt;
     &lt;br&gt;
     &lt;font color="#0000ff"&gt;base&lt;/font&gt;.OnClosing(e);&lt;/div&gt;
    }&lt;/div&gt;
   &lt;div style="DISPLAY:none;BACKGROUND-COLOR:#ffffff"&gt;&lt;b&gt; . . .&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- OnClosing code end --&gt;
  &lt;p&gt;And that's all!&lt;/p&gt;
  &lt;p&gt;The full C# sample code is available below. There's only missing icon resources, 
   but you will correct them by yourself!&lt;/p&gt;
  &lt;div style='margin-left:10pt;margin-right:2pt;border:#c0c0c0 1px solid'&gt;&lt;div style="font-size:10pt;border-bottom:#c0c0c0 1px solid" onclick="var i=this.sel,j;for(j=0;j&lt;3;j++)this.childNodes[2+j*2].checked=j==i;if(i==this.selold)return;var sh=new Array('none',''),o=this.parentNode;j=i==0?0:1;this.selold=i;o.childNodes[1].style.display=sh[j];o.childNodes[2].style.display=sh[1-j];o=o.childNodes[1];var h =o.offsetHeight;o.style.height=i==1?'200pt':'';if(i==1 &amp;&amp; o.offsetHeight&gt;h)o.style.height=h;"
    sel="0" selold="0"&gt;&lt;b&gt; Code &lt;/b&gt;&lt;a href='javascript:' onclick="window.clipboardData.setData('Text',this.parentNode.parentNode.childNodes[1].innerText);alert('Code copied to clipboard');"&gt;
     Copy &lt;/a&gt;&lt;input type="Radio" onclick="parentNode.sel=0" name="29a965f573134f84ac3617c202e996d6"
     checked ID="Radio4" VALUE="Radio4"&gt;Hide&lt;input type="Radio" onclick="parentNode.sel=1" name="29a965f573134f84ac3617c202e996d6"
     ID="Radio5" VALUE="Radio5"&gt;Scroll&lt;input type="Radio" onclick="parentNode.sel=2" name="29a965f573134f84ac3617c202e996d6"
     ID="Radio6" VALUE="Radio6"&gt;Full&lt;/div&gt;
   &lt;div style="overflow:auto;font-size:15;font-family:'Courier New';display:'none'"&gt;&lt;font color="#0000FF"&gt;#region&lt;/font&gt;
    References&lt;br&gt;
    &lt;br&gt;
    &lt;font color="#0000FF"&gt;using&lt;/font&gt; System;&lt;br&gt;
    &lt;font color="#0000FF"&gt;using&lt;/font&gt; System.ComponentModel;&lt;br&gt;
    &lt;font color="#0000FF"&gt;using&lt;/font&gt; System.Windows.Forms;&lt;br&gt;
    &lt;font color="#0000FF"&gt;using&lt;/font&gt; System.Security.Permissions;&lt;br&gt;
    &lt;br&gt;
    &lt;font color="#0000FF"&gt;#endregion&lt;br&gt;
     &lt;br&gt;
     namespace&lt;/font&gt; MinimizeOnClose&lt;br&gt;
    {&lt;div style="margin-left:20pt"&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;summary&amp;gt;&lt;/font&gt;&lt;br&gt;
     &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; Represents the main window 
      of the application.&lt;/font&gt;&lt;br&gt;
     &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;br&gt;
     &lt;font color="#0000FF"&gt;public&lt;/font&gt;&lt;font color="#0000FF"&gt; class&lt;/font&gt; MinimizeOnClose 
     : System.Windows.Forms.Form&lt;br&gt;
     {&lt;div style="margin-left:20pt"&gt;&lt;font color="#0000FF"&gt;#region&lt;/font&gt; Interop 
      Constants&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt;&lt;font color="#0000FF"&gt; const&lt;/font&gt;&lt;font color="#0000FF"&gt;
       int&lt;/font&gt; WM_QUERYENDSESSION = 0x11;&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;#endregion&lt;br&gt;
       &lt;br&gt;
       #region&lt;/font&gt; Fields&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt; System.Windows.Forms.NotifyIcon 
      notifyIcon;&lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt; System.Windows.Forms.ContextMenu 
      notifyIconMenu;&lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt; System.Windows.Forms.MenuItem openMenu;&lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt; System.Windows.Forms.MenuItem hideMenu;&lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt; System.Windows.Forms.MenuItem exitMenu;&lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt; System.ComponentModel.IContainer 
      components;&lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt; System.Windows.Forms.MenuItem blankMenu;&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt;&lt;font color="#0000FF"&gt; bool&lt;/font&gt; endSessionPending;&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;#endregion&lt;br&gt;
       &lt;br&gt;
       #region&lt;/font&gt; Instance Management&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;public&lt;/font&gt; MinimizeOnClose()&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;InitializeComponent();&lt;/div&gt;
      }&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;#endregion&lt;br&gt;
       &lt;br&gt;
       #region&lt;/font&gt; Protected Overrides&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;summary&amp;gt;&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; Cleans all the resources.&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;br&gt;
      &lt;font color="#0000FF"&gt;protected&lt;/font&gt;&lt;font color="#0000FF"&gt; override&lt;/font&gt;&lt;font color="#0000FF"&gt;
       void&lt;/font&gt; Dispose(&lt;font color="#0000FF"&gt;bool&lt;/font&gt; disposing)&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;&lt;font color="#0000FF"&gt;if&lt;/font&gt; (disposing)&lt;br&gt;
       {&lt;div style="margin-left:20pt"&gt;&lt;font color="#0000FF"&gt;if&lt;/font&gt; (components !=&lt;font color="#0000FF"&gt;
         null&lt;/font&gt;)&lt;div style="margin-left:20pt"&gt;components.Dispose();&lt;/div&gt;
       &lt;/div&gt;
       }&lt;br&gt;
       &lt;font color="#0000FF"&gt;base&lt;/font&gt;.Dispose(disposing);&lt;/div&gt;
      }&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;summary&amp;gt;&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; Occurs when the window is 
       requested to be closed.&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;param 
       name=&amp;quot;e&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="#008000"&gt;The event arguments&lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;br&gt;
      &lt;font color="#0000FF"&gt;protected&lt;/font&gt;&lt;font color="#0000FF"&gt; override&lt;/font&gt;&lt;font color="#0000FF"&gt;
       void&lt;/font&gt; OnClosing(CancelEventArgs e)&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;&lt;font color="#0000FF"&gt;if&lt;/font&gt; (endSessionPending)&lt;br&gt;
       {&lt;div style="margin-left:20pt"&gt;&lt;font color="#008000"&gt;// The session is ending&lt;/font&gt;&lt;br&gt;
        e.Cancel =&lt;font color="#0000FF"&gt; false&lt;/font&gt;;&lt;/div&gt;
       }&lt;br&gt;
       &lt;font color="#0000FF"&gt;else&lt;/font&gt;&lt;br&gt;
       {&lt;div style="margin-left:20pt"&gt;&lt;font color="#008000"&gt;// The window must only be 
         minimized in tray&lt;/font&gt;&lt;br&gt;
        e.Cancel =&lt;font color="#0000FF"&gt; true&lt;/font&gt;;&lt;br&gt;
        MinimizeInTray();&lt;/div&gt;
       }&lt;br&gt;
       &lt;br&gt;
       &lt;font color="#0000FF"&gt;base&lt;/font&gt;.OnClosing(e);&lt;/div&gt;
      }&lt;br&gt;
      &lt;div style="margin-left:40pt"&gt;[SecurityPermission(SecurityAction.LinkDemand, 
       UnmanagedCode=&lt;font color="#0000FF"&gt;true&lt;/font&gt;)]&lt;font color="#0000FF"&gt;&lt;/div&gt;
      protected&lt;/font&gt;&lt;font color="#0000FF"&gt; override&lt;/font&gt;&lt;font color="#0000FF"&gt; void&lt;/font&gt;
      WndProc(&lt;font color="#0000FF"&gt;ref&lt;/font&gt; Message m)&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;&lt;font color="#0000FF"&gt;if&lt;/font&gt; (m.Msg == 
       WM_QUERYENDSESSION)&lt;div style="margin-left:20pt"&gt;endSessionPending =&lt;font color="#0000FF"&gt;
         true&lt;/font&gt;;&lt;font color="#0000FF"&gt;&lt;/div&gt;
       base&lt;/font&gt;.WndProc(&lt;font color="#0000FF"&gt;ref&lt;/font&gt; m);&lt;/div&gt;
      }&lt;br&gt;
      &lt;div style="margin-left:40pt"&gt;&lt;font color="#0000FF"&gt;#endregion&lt;br&gt;
      &lt;/div&gt;
      #region&lt;/font&gt; Private Members&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;#region&lt;/font&gt; Event Handlers&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt;&lt;font color="#0000FF"&gt; void&lt;/font&gt; openMenu_Click(&lt;font color="#0000FF"&gt;object&lt;/font&gt;
      sender, System.EventArgs e)&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;ShowFromTray();&lt;/div&gt;
      }&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt;&lt;font color="#0000FF"&gt; void&lt;/font&gt; hideMenu_Click(&lt;font color="#0000FF"&gt;object&lt;/font&gt;
      sender, System.EventArgs e)&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;MinimizeInTray();&lt;/div&gt;
      }&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt;&lt;font color="#0000FF"&gt; void&lt;/font&gt; exitMenu_Click(&lt;font color="#0000FF"&gt;object&lt;/font&gt;
      sender, System.EventArgs e)&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;Application.Exit();&lt;/div&gt;
      }&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;#endregion&lt;br&gt;
       &lt;br&gt;
       #region&lt;/font&gt; Private Methods&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt;&lt;font color="#0000FF"&gt; void&lt;/font&gt; MinimizeInTray()&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;&lt;font color="#0000FF"&gt;this&lt;/font&gt;.ShowInTaskbar =&lt;font color="#0000FF"&gt;
        false&lt;/font&gt;;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.WindowState = FormWindowState.Minimized;&lt;br&gt;
       &lt;br&gt;
       openMenu.Visible =&lt;font color="#0000FF"&gt; true&lt;/font&gt;;&lt;br&gt;
       hideMenu.Visible =&lt;font color="#0000FF"&gt; false&lt;/font&gt;;&lt;/div&gt;
      }&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt;&lt;font color="#0000FF"&gt; void&lt;/font&gt; ShowFromTray()&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;&lt;font color="#0000FF"&gt;this&lt;/font&gt;.WindowState = 
       FormWindowState.Normal;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.ShowInTaskbar =&lt;font color="#0000FF"&gt; true&lt;/font&gt;;&lt;br&gt;
       &lt;br&gt;
       openMenu.Visible =&lt;font color="#0000FF"&gt; true&lt;/font&gt;;&lt;br&gt;
       hideMenu.Visible =&lt;font color="#0000FF"&gt; false&lt;/font&gt;;&lt;/div&gt;
      }&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;#endregion&lt;br&gt;
       &lt;br&gt;
       #region&lt;/font&gt; Windows Form Designer generated code&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;summary&amp;gt;&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; Required method for Designer 
       support - do not modify&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; the contents of this method 
       with the code editor.&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;br&gt;
      &lt;font color="#0000FF"&gt;private&lt;/font&gt;&lt;font color="#0000FF"&gt; void&lt;/font&gt; InitializeComponent()&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;&lt;font color="#0000FF"&gt;this&lt;/font&gt;.components =&lt;font color="#0000FF"&gt;
        new&lt;/font&gt; System.ComponentModel.Container();&lt;br&gt;
       System.Resources.ResourceManager resources =&lt;font color="#0000FF"&gt; new&lt;/font&gt; System.Resources.ResourceManager(&lt;font color="#0000FF"&gt;typeof&lt;/font&gt;(MinimizeOnClose));&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.notifyIcon =&lt;font color="#0000FF"&gt; new&lt;/font&gt; 
       System.Windows.Forms.NotifyIcon(&lt;font color="#0000FF"&gt;this&lt;/font&gt;.components);&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.notifyIconMenu =&lt;font color="#0000FF"&gt; new&lt;/font&gt;
       System.Windows.Forms.ContextMenu();&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.openMenu =&lt;font color="#0000FF"&gt; new&lt;/font&gt; System.Windows.Forms.MenuItem();&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.hideMenu =&lt;font color="#0000FF"&gt; new&lt;/font&gt; System.Windows.Forms.MenuItem();&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.blankMenu =&lt;font color="#0000FF"&gt; new&lt;/font&gt; System.Windows.Forms.MenuItem();&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.exitMenu =&lt;font color="#0000FF"&gt; new&lt;/font&gt; System.Windows.Forms.MenuItem();&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;// notifyIcon&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.notifyIcon.ContextMenu =&lt;font color="#0000FF"&gt; this&lt;/font&gt;.notifyIconMenu;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.notifyIcon.Icon = 
       ((System.Drawing.Icon)(resources.GetObject(&amp;quot;notifyIcon.Icon&amp;quot;)));&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.notifyIcon.Text = 
       &amp;quot;MinimizeOnClose&amp;quot;;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.notifyIcon.Visible =&lt;font color="#0000FF"&gt; true&lt;/font&gt;;&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;// notifyIconMenu&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.notifyIconMenu.MenuItems.AddRange(&lt;font color="#0000FF"&gt;new&lt;/font&gt;
       System.Windows.Forms.MenuItem[] {&lt;div style="margin-left:40pt"&gt;&lt;font color="#0000FF"&gt;this&lt;/font&gt;.openMenu,&lt;br&gt;
        &lt;font color="#0000FF"&gt;this&lt;/font&gt;.hideMenu,&lt;br&gt;
        &lt;font color="#0000FF"&gt;this&lt;/font&gt;.blankMenu,&lt;br&gt;
        &lt;font color="#0000FF"&gt;this&lt;/font&gt;.exitMenu});&lt;font color="#008000"&gt;&lt;/div&gt;
       //&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;// openMenu&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.openMenu.Index = 0;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.openMenu.Text = &amp;quot;&amp;amp;Open&amp;quot;;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.openMenu.Visible =&lt;font color="#0000FF"&gt; false&lt;/font&gt;;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.openMenu.Click +=&lt;font color="#0000FF"&gt; new&lt;/font&gt;
       System.EventHandler(&lt;font color="#0000FF"&gt;this&lt;/font&gt;.openMenu_Click);&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;// hideMenu&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.hideMenu.Index = 1;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.hideMenu.Text = &amp;quot;&amp;amp;Hide&amp;quot;;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.hideMenu.Click +=&lt;font color="#0000FF"&gt; new&lt;/font&gt;
       System.EventHandler(&lt;font color="#0000FF"&gt;this&lt;/font&gt;.hideMenu_Click);&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;// blankMenu&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.blankMenu.Index = 2;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.blankMenu.Text = &amp;quot;-&amp;quot;;&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;// exitMenu&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.exitMenu.Index = 3;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.exitMenu.Text = &amp;quot;E&amp;amp;xit&amp;quot;;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.exitMenu.Click +=&lt;font color="#0000FF"&gt; new&lt;/font&gt;
       System.EventHandler(&lt;font color="#0000FF"&gt;this&lt;/font&gt;.exitMenu_Click);&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;// MinimizeOnClose&lt;/font&gt;&lt;br&gt;
       &lt;font color="#008000"&gt;//&lt;/font&gt;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.AutoScaleBaseSize =&lt;font color="#0000FF"&gt; new&lt;/font&gt;
       System.Drawing.Size(5, 13);&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.ClientSize =&lt;font color="#0000FF"&gt; new&lt;/font&gt; 
       System.Drawing.Size(240, 78);&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.Icon = 
       ((System.Drawing.Icon)(resources.GetObject(&amp;quot;$this.Icon&amp;quot;)));&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.Name = &amp;quot;MinimizeOnClose&amp;quot;;&lt;br&gt;
       &lt;font color="#0000FF"&gt;this&lt;/font&gt;.Text = &amp;quot;MinimizeOnClose&amp;quot;;&lt;br&gt;
      &lt;/div&gt;
      }&lt;br&gt;
      &lt;font color="#0000FF"&gt;#endregion&lt;br&gt;
      &lt;/font&gt;
      &lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;summary&amp;gt;&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; The application entry point.&lt;/font&gt;&lt;br&gt;
      &lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#808080"&gt; &amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;br&gt;
      [STAThread]&lt;br&gt;
      &lt;font color="#0000FF"&gt;static&lt;/font&gt;&lt;font color="#0000FF"&gt; void&lt;/font&gt; Main()&lt;br&gt;
      {&lt;div style="margin-left:20pt"&gt;Application.Run(&lt;font color="#0000FF"&gt;new&lt;/font&gt; MinimizeOnClose());&lt;/div&gt;
      }&lt;br&gt;
      &lt;br&gt;
      &lt;font color="#0000FF"&gt;#endregion&lt;/font&gt;&lt;/div&gt;
     }&lt;/div&gt;
    }&lt;/div&gt;
   &lt;div style="background-color:#ffffff"&gt;&lt;b&gt; . . .&lt;/b&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;p&gt;Have a nice week-end, and do not overindulge in Easter eggs too much!&lt;/p&gt;&lt;img src ="http://www.pixvillage.com/blogs/devblog/aggbug/174.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>