<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.windowsclient.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">dotnet thoughts </title><subtitle type="html">Tips and Tricks of Windows Programming</subtitle><id>http://blogs.windowsclient.net/vsdev/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/vsdev/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.windowsclient.net/vsdev/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20423.869">Community Server</generator><updated>2009-03-20T10:02:00Z</updated><entry><title>Debugging Windows Services</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/vsdev/archive/2009/06/18/debugging-windows-services.aspx" /><id>http://blogs.windowsclient.net/vsdev/archive/2009/06/18/debugging-windows-services.aspx</id><published>2009-06-18T11:38:00Z</published><updated>2009-06-18T11:38:00Z</updated><content type="html">In the current project, I have to develop some windows services to sending out notification mails. The first challenge I faced is I can&amp;#39;t directly run and debug the Windows service. For that I need to install the service (using installutil –I ServiceName) and attach the process to Visual studio, and then only I can debug it. It works fine for me. Then the next challenge was, debugging the code in the onStart event. Because once the service started, then only we can able to attach it to Visual Studio. So I put some code to write to text file, and/or event log. But I feel like it’s not a good method. After searching in the net I got a nice workaround.
&lt;br /&gt;&lt;p&gt;protected override void OnStart(string[] args)&lt;br /&gt;
{
&lt;br /&gt;System.Diagnostics.Debugger.Launch();&lt;br /&gt;
//Rest of the code
&lt;br /&gt;}
&lt;br /&gt;&lt;br /&gt;While starting the Service, it will display a dialog like this
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;img src="http://blogs.windowsclient.net/blogs/vsdev/dialog.png" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

After selecting Yes, Visual Studio will open up and you can start debugging.
You can get more information from these links 
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/yaleeyangmsblog/archive/2007/05/02/three-ways-debugging-net-windows-service.aspx" target="_blank"&gt;http://blogs.msdn.com/yaleeyangmsblog/archive/2007/05/02/three-ways-debugging-net-windows-service.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://geekswithblogs.net/GertVerhoeven/archive/2007/11/28/117181.aspx" target="_blank"&gt;http://geekswithblogs.net/GertVerhoeven/archive/2007/11/28/117181.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/hi-in/magazine/cc301845%28en-us%29.aspx" target="_blank"&gt;http://msdn.microsoft.com/hi-in/magazine/cc301845(en-us).aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=206924" width="1" height="1"&gt;</content><author><name>vsdev</name><uri>http://blogs.windowsclient.net/members/vsdev.aspx</uri></author><category term=".Net" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/.Net/default.aspx" /><category term="Debugging" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/Debugging/default.aspx" /><category term="Windows Service" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/Windows+Service/default.aspx" /><category term="Visual Studio" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title> A Simple Splash screen in C#</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/vsdev/archive/2009/06/12/a-simple-splash-screen-in-c.aspx" /><id>http://blogs.windowsclient.net/vsdev/archive/2009/06/12/a-simple-splash-screen-in-c.aspx</id><published>2009-06-12T13:55:00Z</published><updated>2009-06-12T13:55:00Z</updated><content type="html">&lt;p&gt;I started my .net career in VB.Net. While developing a windows application in VB.Net it is pretty easy to put a Splash screen. There is Project property called Splash screen and you can put any form there, after that the specified form will act as a Splash screen. But when I started an windows application in C#, there is no project property called Splash screen. While doing some searching, I found lot of ways, like Putting a timer and closing the splash etc. But I feel like it is not the right way of doing a splash screen, then I started my own implementation and found one. I am not sure it is good one or not, but it is working for me.&lt;br /&gt;&lt;br /&gt;Here is the steps:&lt;br /&gt;&lt;br /&gt;1) Added one Form with an Image, as Splashscreen.cs, and my main UI is Welcome.cs&lt;br /&gt;2) In the Program.cs I modified the code like the following&lt;br /&gt;&lt;br /&gt;[STAThread]&lt;br /&gt;static void Main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Application.ApplicationExit += new EventHandler(Application_ApplicationExit);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Application.EnableVisualStyles();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Application.SetCompatibleTextRenderingDefault(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SplashScreen s = new SplashScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;s.Show();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Welcome welcome = new Welcome(s);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Application.Run(welcome);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;3) And in the Welcome.cs, added one parameterized constructor, with SplashScreen as the Parameter&lt;br /&gt;&lt;br /&gt;SplashScreen _s = null;&lt;br /&gt;public Welcome(SplashScreen s)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;this._s = s;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;4) And in the Form_Load() event I added code to close the splash screen if exists.&lt;br /&gt;&lt;br /&gt;if (this._s != null) { this._s.Close(); }&lt;br /&gt;&lt;br /&gt;5) Run the application, see the splash is coming and after that Main UI is coming&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=198594" width="1" height="1"&gt;</content><author><name>vsdev</name><uri>http://blogs.windowsclient.net/members/vsdev.aspx</uri></author><category term=".Net" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/.Net/default.aspx" /><category term="Splash Screen" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/Splash+Screen/default.aspx" /><category term="C#" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/C_2300_/default.aspx" /></entry><entry><title>Mini TechEd in Trivandrum</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/vsdev/archive/2009/06/11/mini-teched-in-trivandrum.aspx" /><id>http://blogs.windowsclient.net/vsdev/archive/2009/06/11/mini-teched-in-trivandrum.aspx</id><published>2009-06-11T09:12:00Z</published><updated>2009-06-11T09:12:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://anuraj.wordpress.com/files/2009/06/logo.png"&gt;&lt;img src="http://anuraj.wordpress.com/files/2009/06/logo.png" alt="logo" title="logo" class="alignnone size-full wp-image-279" width="230" border="0" height="71" /&gt;&lt;/a&gt;
&lt;b&gt;&lt;a href="http://www.k-mug.org"&gt;&lt;br /&gt;&lt;br /&gt;Kerala Microsoft user’s group (K-MUG)&lt;/a&gt;&lt;/b&gt; is organizing a Mini-TechEd in Trivandrum. Don’t miss this Free opportunity to learn about Windows 7,  Visual Studio 2010 features, WPF, What is new in ASP.NET 4.0, SQL server best practices,SQL logical query execution and optimization tips,Hidden Gems in SQL Server.
&lt;/p&gt;&lt;p&gt;Date : 27th June 2009
&lt;br /&gt;Venue : Technopark, Trivandrum
&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;Agenda&lt;/b&gt;&lt;/u&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 1. Visual Studio 2010 Features&lt;br /&gt;&amp;nbsp;&amp;nbsp; 2. What is new in ASP.NET 4.0&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3. Silverlight 3.0&lt;br /&gt;&amp;nbsp;&amp;nbsp; 4. Windows 7 for developers&lt;br /&gt;&amp;nbsp;&amp;nbsp; 5. SQL server best practices&lt;br /&gt;&amp;nbsp;&amp;nbsp; 6. SQL logical query execution and optimization tips&lt;br /&gt;&amp;nbsp;&amp;nbsp; 7. WPF Graphics&lt;br /&gt;&amp;nbsp;&amp;nbsp; 8. Hidden Gems in SQL Server&lt;br /&gt;&amp;nbsp;&amp;nbsp; 9. All about User Experience &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://k-mug.org/content/teched.aspx" target="_blank"&gt;Register Now!&lt;/a&gt;&lt;/p&gt;

Related Links:

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.ninethsense.com/mini-teched-in-trivandrum/" target="_blank"&gt;http://blog.ninethsense.com/mini-teched-in-trivandrum/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kidoos.net/blogs/kidoos/archive/2009/06/15/mini_2D00_teched_2D00_in_2D00_trivandrum.aspx" target="_blank"&gt;http://kidoos.net/blogs/kidoos/archive/2009/06/15/mini_2D00_teched_2D00_in_2D00_trivandrum.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codegeeks.net/mini-teched-in-trivandrum" target="_blank"&gt;http://www.codegeeks.net/mini-teched-in-trivandrum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weblogs.asp.net/shijuvarghese/archive/2009/06/15/mini-teched-in-trivandrum.aspx" target="_blank"&gt;http://weblogs.asp.net/shijuvarghese/archive/2009/06/15/mini-teched-in-trivandrum.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sreesharp.com/blog/mini-teched-in-trivandrum-by-kerala-microsoft-users-group-k-mug/103/" target="_blank"&gt;http://sreesharp.com/blog/mini-teched-in-trivandrum-by-kerala-microsoft-users-group-k-mug/103/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=197020" width="1" height="1"&gt;</content><author><name>vsdev</name><uri>http://blogs.windowsclient.net/members/vsdev.aspx</uri></author><category term="Mini TechEd in Trivandrum" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/Mini+TechEd+in+Trivandrum/default.aspx" /></entry><entry><title>WPF Menu - How to implement Shortcut Keys</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/vsdev/archive/2009/03/30/wpf-menu-how-to-implement-shortcut-keys.aspx" /><id>http://blogs.windowsclient.net/vsdev/archive/2009/03/30/wpf-menu-how-to-implement-shortcut-keys.aspx</id><published>2009-03-31T01:35:00Z</published><updated>2009-03-31T01:35:00Z</updated><content type="html">&lt;p&gt;WPF Menu - How to implement Shortcut Heys &lt;/p&gt;  &lt;p&gt;There are many ways to add shortcut keys in WPF &lt;/p&gt;  &lt;p&gt;# Using Underscore - In the Header Property, put the &amp;quot;_&amp;quot; before the Text, and you can use &amp;quot;ALT+&amp;lt;Key&amp;gt;&amp;quot;. This is not Shortcut key, it is normally called &amp;quot;HotKey&amp;quot;    &lt;br /&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_Open&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;




&lt;p&gt;# Using InputGestureText - This is the way Visual Studio gives directly. - You can set a Key combination directly over here.&amp;#160; &lt;br /&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;_Open&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;InputGestureText&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl + O&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;




&lt;p&gt;But it will invoke the click event, even if we use the Key combination. This is for display purpose only. &lt;/p&gt;

&lt;p&gt;#Using CommandBindings - - I found this way is better and easier one&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;In the markup create the command Bindings using Command Collections. 
    &lt;br /&gt;

    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CommandBinding&lt;/span&gt; &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ApplicationCommands.Open&amp;quot;&lt;/span&gt; &lt;br /&gt;&lt;span class="attr"&gt;CanExecute&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;CommandCanExecute&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Executed&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;CommandExecuted&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; 
  
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CommandBinding&lt;/span&gt; &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ApplicationCommands.Close&amp;quot;&lt;/span&gt; &lt;br /&gt;&lt;span class="attr"&gt;CanExecute&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;CommandCanExecute&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Executed&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;CommandExecuted&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
    



    &lt;div class="csharpcode"&gt;
      &lt;div class="csharpcode"&gt;
        &lt;pre&gt;&lt;span class="kwrd"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    


&lt;/li&gt;

  &lt;li&gt;In the code implement the event Handlers. 
    &lt;p&gt;&lt;/p&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;div class="csharpcode"&gt;
      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Sub&lt;/span&gt; CommandExecuted(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; sender &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; e &lt;span class="kwrd"&gt;As&lt;/span&gt; ExecutedRoutedEventArgs)&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;‘Add the commands &lt;span class="kwrd"&gt;to&lt;/span&gt; be executed.&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;If&lt;/span&gt; e.Command.Equals(ApplicationCommands.Open) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;MessageBox.Show(”Open Menu item clicked”)&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;ElseIf&lt;/span&gt; e.Command.Equals(ApplicationCommands.Close) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;MessageBox.Show(”Close menu item clicked”)&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;Sub&lt;/span&gt; CommandCanExecute(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; sender &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; e &lt;span class="kwrd"&gt;As&lt;/span&gt; CanExecuteRoutedEventArgs)&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;e.CanExecute = &lt;span class="kwrd"&gt;True&lt;/span&gt; ‘I am always returning &lt;span class="kwrd"&gt;true&lt;/span&gt;, based &lt;span class="kwrd"&gt;on&lt;/span&gt; this the menu item will enabled / disabled&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Sub&lt;/pre&gt;
    &lt;/div&gt;
    



    &lt;p&gt;&lt;/p&gt;
  &lt;/li&gt;

  &lt;li&gt;Assign the Commands to the Command property of our menu items. 
    &lt;br /&gt;

    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MenuItem&lt;/span&gt; &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ApplicationCommands.Open&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Separator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MenuItem&lt;/span&gt; &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ApplicationCommands.Close&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;Compile it run it. You will see “Ctrl + O” added to the right side Open menu item. &lt;/p&gt;

    &lt;p&gt;You can see Ctrl + O added into the Open Menu item(Screenshot) &lt;/p&gt;
    



&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img title="menu_shortcuts_in_wpf" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="244" alt="menu_shortcuts_in_wpf" src="http://blogs.windowsclient.net/blogs/vsdev/menu_shortcuts_in_wpf_2535BE11.jpg" width="244" border="0" /&gt; &lt;/p&gt;

&lt;p&gt;Happy WPF Programming :)&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=122122" width="1" height="1"&gt;</content><author><name>vsdev</name><uri>http://blogs.windowsclient.net/members/vsdev.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/WPF/default.aspx" /><category term=".Net" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/.Net/default.aspx" /></entry><entry><title>Freehand drawing with .Net Windows forms</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/vsdev/archive/2009/03/20/freeand-drawing-with-net-windows-forms.aspx" /><id>http://blogs.windowsclient.net/vsdev/archive/2009/03/20/freeand-drawing-with-net-windows-forms.aspx</id><published>2009-03-20T14:02:00Z</published><updated>2009-03-20T14:02:00Z</updated><content type="html">&lt;p&gt;Few days back, I got a requirement to implement Free Hand drawing in .Net. I searched a lot but I didn’t get any good solution, the one I found from code project was Invalidating the picture box every time. So today I got a solution, it not seems to be a perfect solution because Paint events occurs, we need to re-paint the whole lines again. &lt;/p&gt;
&lt;p&gt;I am attaching the code here. I will update the post once I get some perfect solution for this.&lt;/p&gt;
&lt;p&gt;Private m_Drawing As Boolean = False&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private m_List As List(Of Point) = Nothing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub MyPic_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyPic.MouseDown&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If e.Button = Windows.Forms.MouseButtons.Left Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_Drawing = True&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub MyPic_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyPic.MouseUp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If m_Drawing AndAlso m_List IsNot Nothing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If m_List.Count &amp;gt;= 2 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyPic.CreateGraphics.DrawLines(New Pen(Color.Blue, 1), m_List.ToArray())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_Drawing = False&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_List.Clear()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub MyPic_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyPic.MouseMove&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If m_List IsNot Nothing AndAlso m_Drawing Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_List.Add(e.Location)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_List = New List(Of Point)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=115315" width="1" height="1"&gt;</content><author><name>vsdev</name><uri>http://blogs.windowsclient.net/members/vsdev.aspx</uri></author><category term=".Net" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/.Net/default.aspx" /><category term="Windows Forms" scheme="http://blogs.windowsclient.net/vsdev/archive/tags/Windows+Forms/default.aspx" /></entry></feed>