<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Naresh.Jois &#187; C#</title>
	<atom:link href="http://www.nareshjois.com/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nareshjois.com</link>
	<description>Home of a professional developer &#38; a aspiring photographer</description>
	<lastBuildDate>Fri, 03 Feb 2012 16:57:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Play with Clay</title>
		<link>http://www.nareshjois.com/2011/06/play-with-clay/</link>
		<comments>http://www.nareshjois.com/2011/06/play-with-clay/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 08:13:10 +0000</pubDate>
		<dc:creator>naresh</dc:creator>
				<category><![CDATA[.net Programming]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[clay]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[expando]]></category>

		<guid isPermaLink="false">http://www.nareshjois.com/?p=868</guid>
		<description><![CDATA[I have been a big fan of ExpandoObject ever since it was introduced with .net 4.0, and I have been using the Expando Object object ever since, but I always felt that it was not enough, ExpandoObject was fun and all but it was just not enough, and me being really lazy remember coying and [...]]]></description>
			<content:encoded><![CDATA[<p>I have been a big fan of ExpandoObject ever since it was introduced with .net 4.0, and I have been using the Expando Object object ever since, but I always felt that it was not enough, ExpandoObject was fun and all but it was just not enough, and me being really lazy remember coying and pasting code just to loop through properties of a class using reflection and all that headache.</p>
<p>Enter Clay : The moment I have laid my eyes on this beautiful piece of code, I have become a huge fan, and it has all the things the expando should have been.</p>
<p>So How do you begin , Its really simple and also follows unique naming convention you begin with a clay object with New (emphasis on uppercase &#8216;N&#8217;)</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;">dynamic <span style="color: #008000;">New</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> ClayFactory<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
var cUser <span style="color: #008000;">=</span> <span style="color: #008000;">New</span><span style="color: #008000;">.</span><span style="color: #0000FF;">User</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>and thats it,<br />
In Clay Indexer Syntax and Property Accessors are the same so</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;">cUser<span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span> <span style="color: #008000;">=</span> cUser<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;Name&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span></pre></div></div>

<p>you can pass anonymous objects and also accepts named arguments, you can also use jQuery style chain able setters or put use them as an array</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;">var cUser <span style="color: #008000;">=</span> <span style="color: #008000;">New</span><span style="color: #008000;">.</span><span style="color: #0000FF;">User</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> <span style="color: #008000;">&#123;</span> Name <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Naresh&quot;</span>, Mail <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;something@mail.com&quot;</span> <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
var cUser <span style="color: #008000;">=</span> <span style="color: #008000;">New</span><span style="color: #008000;">.</span><span style="color: #0000FF;">User</span><span style="color: #008000;">&#40;</span> Name <span style="color: #008000;">:</span> <span style="color: #666666;">&quot;Naresh&quot;</span>, Mail <span style="color: #008000;">:</span> <span style="color: #666666;">&quot;something@mail.com&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
var cUser <span style="color: #008000;">=</span> <span style="color: #008000;">New</span><span style="color: #008000;">.</span><span style="color: #0000FF;">User</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Naresh&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Mail</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;something@mail.com&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
var Users <span style="color: #008000;">=</span> <span style="color: #008000;">New</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Array</span><span style="color: #008000;">&#40;</span>
           <span style="color: #008000;">New</span><span style="color: #008000;">.</span><span style="color: #0000FF;">User</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Naresh&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Mail</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;something@mail.com&quot;</span><span style="color: #008000;">&#41;</span>,
           <span style="color: #008000;">New</span><span style="color: #008000;">.</span><span style="color: #0000FF;">User</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Rakesh&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Mail</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;something@mail.com&quot;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>So What are you waiting for get started at<br />
<a href="http://clay.codeplex.com/">clay.codeplex.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nareshjois.com/2011/06/play-with-clay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Linq to Find a Control</title>
		<link>http://www.nareshjois.com/2010/10/using-linq-to-find-a-control/</link>
		<comments>http://www.nareshjois.com/2010/10/using-linq-to-find-a-control/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 11:04:04 +0000</pubDate>
		<dc:creator>naresh</dc:creator>
				<category><![CDATA[.net Programming]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Linq]]></category>

		<guid isPermaLink="false">http://www.nareshjois.com/?p=827</guid>
		<description><![CDATA[I think Every one has one time or the other tried to find a control by looping over and find the required control, but we can use Linq to do the same thing. public static class PageExtensions &#123; public static IEnumerable&#60;control&#62; All&#40;this ControlCollection controls&#41; &#123; foreach &#40;Control control in controls&#41; &#123; foreach &#40;Control grandChild in [...]]]></description>
			<content:encoded><![CDATA[<p>I think Every one has one time or the other tried to find a control by looping over and find the required control, but we can use Linq to do the same thing.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;"> <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">class</span> PageExtensions
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> IEnumerable<span style="color: #008000;">&lt;</span>control<span style="color: #008000;">&gt;</span> All<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span> ControlCollection controls<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>Control control <span style="color: #0600FF; font-weight: bold;">in</span> controls<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>Control grandChild <span style="color: #0600FF; font-weight: bold;">in</span> control<span style="color: #008000;">.</span><span style="color: #0000FF;">Controls</span><span style="color: #008000;">.</span><span style="color: #0000FF;">All</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #0600FF; font-weight: bold;">yield</span> <span style="color: #0600FF; font-weight: bold;">return</span> grandChild<span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #0600FF; font-weight: bold;">yield</span> <span style="color: #0600FF; font-weight: bold;">return</span> control<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&lt;/</span>control<span style="color: #008000;">&gt;</span></pre></div></div>

<p>Then you can use as a Linq Expression</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;">var ctrls <span style="color: #008000;">=</span> controls<span style="color: #008000;">.</span><span style="color: #0000FF;">All</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Where</span><span style="color: #008000;">&#40;</span>c <span style="color: #008000;">=&gt;</span> c<span style="color: #008000;">.</span><span style="color: #0000FF;">GetType</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">==</span> <span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>Button<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.nareshjois.com/2010/10/using-linq-to-find-a-control/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Implementing IEditableObject when using as a datasource</title>
		<link>http://www.nareshjois.com/2008/12/implementing-ieditableobject-when-using-as-a-datasource/</link>
		<comments>http://www.nareshjois.com/2008/12/implementing-ieditableobject-when-using-as-a-datasource/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 12:30:05 +0000</pubDate>
		<dc:creator>naresh</dc:creator>
				<category><![CDATA[.net Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[IEditableObject]]></category>

		<guid isPermaLink="false">http://www.nareshjois.com/?p=250</guid>
		<description><![CDATA[If have used a class as datasource , you would know that to provide proper validation and you would nees to implement a IEditableObject, but if you sont its really simple all you have to do is provide 3 functions , The code Mentioned below is a simple example and I think you can take [...]]]></description>
			<content:encoded><![CDATA[<p>If have used a class as datasource , you would know that to provide proper validation and you would nees to implement a IEditableObject, but if you sont its really simple all you have to do is provide 3 functions , The code Mentioned below is a simple example and I think you can take it from there</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;"> <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> ReceiptPay <span style="color: #008000;">:</span> IEditableObject
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">int</span> FeeComponentId <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> FeeComponent <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">decimal</span> Amount <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">decimal</span> amtbkp<span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">bool</span> inTXN <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">public</span> ReceiptPay<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> FCId, <span style="color: #6666cc; font-weight: bold;">string</span> FC<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                FeeComponentId <span style="color: #008000;">=</span> FCId<span style="color: #008000;">;</span>
                FeeComponent <span style="color: #008000;">=</span> FC<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #008080;">#region IEditableObject Members</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> BeginEdit<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>inTXN<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    amtbkp <span style="color: #008000;">=</span> Amount<span style="color: #008000;">;</span>
                    inTXN <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> CancelEdit<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>inTXN<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    Amount <span style="color: #008000;">=</span> amtbkp<span style="color: #008000;">;</span>
                    inTXN <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> EndEdit<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                inTXN <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #008080;">#endregion</span>
        <span style="color: #008000;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.nareshjois.com/2008/12/implementing-ieditableobject-when-using-as-a-datasource/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Serialize and Deserialize object as XML</title>
		<link>http://www.nareshjois.com/2008/12/serialize-and-deserialize-object-as-xml/</link>
		<comments>http://www.nareshjois.com/2008/12/serialize-and-deserialize-object-as-xml/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 10:01:32 +0000</pubDate>
		<dc:creator>naresh</dc:creator>
				<category><![CDATA[.net Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[XML Serialisaztion]]></category>

		<guid isPermaLink="false">http://www.nareshjois.com/?p=241</guid>
		<description><![CDATA[If you ever wanted to store an in memory obejct, i think serialization is the best possible method to do so, so is when you want to transport an object, i was using this for a long time now, now i have modified it a bit with generics using System.Collections.Generic; using System.Text; using System.Xml; using [...]]]></description>
			<content:encoded><![CDATA[<p>If you ever wanted to store an in memory obejct, i think serialization is the best possible method to do so, so is when you want to transport an object, i was using this for a long time now, now i have modified it a bit with generics</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Collections.Generic</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Text</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Xml</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.IO</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Xml.Serialization</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// To convert a Byte Array of Unicode values (UTF-8 encoded) to a complete String.</span>
<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;characters&quot;&gt;Unicode Byte Array to be converted to String&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;String converted from Unicode Byte Array&lt;/returns&gt;</span>
<span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">string</span> UTF8ByteArrayToString<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">byte</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> characters<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
   UTF8Encoding encoding <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> UTF8Encoding<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
   <span style="color: #6666cc; font-weight: bold;">string</span> constructedString <span style="color: #008000;">=</span> encoding<span style="color: #008000;">.</span><span style="color: #0000FF;">GetString</span><span style="color: #008000;">&#40;</span>characters<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
   <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #008000;">&#40;</span>constructedString<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// Converts the String to UTF8 Byte array and is used in De serialization</span>
<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;pXmlString&quot;&gt;&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;&lt;/returns&gt;</span>
<span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">Byte</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> StringToUTF8ByteArray<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> pXmlString<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
   UTF8Encoding encoding <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> UTF8Encoding<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
   <span style="color: #6666cc; font-weight: bold;">byte</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> byteArray <span style="color: #008000;">=</span> encoding<span style="color: #008000;">.</span><span style="color: #0000FF;">GetBytes</span><span style="color: #008000;">&#40;</span>pXmlString<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
   <span style="color: #0600FF; font-weight: bold;">return</span> byteArray<span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// Serialize an object into an XML string</span>
<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;typeparam name=&quot;T&quot;&gt;&lt;/typeparam&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;obj&quot;&gt;&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;&lt;/returns&gt;</span>
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">string</span> SerializeObject<span style="color: #008000;">&lt;</span>t<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span>T obj<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
   <span style="color: #0600FF; font-weight: bold;">try</span>
   <span style="color: #008000;">&#123;</span>
      <span style="color: #6666cc; font-weight: bold;">string</span> xmlString <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span>
      MemoryStream memoryStream <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> MemoryStream<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
      XmlSerializer xs <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> XmlSerializer<span style="color: #008000;">&#40;</span><span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>T<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
      XmlTextWriter xmlTextWriter <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> XmlTextWriter<span style="color: #008000;">&#40;</span>memoryStream, Encoding<span style="color: #008000;">.</span><span style="color: #0000FF;">UTF8</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
      xs<span style="color: #008000;">.</span><span style="color: #0000FF;">Serialize</span><span style="color: #008000;">&#40;</span>xmlTextWriter, obj<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
      memoryStream <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span>MemoryStream<span style="color: #008000;">&#41;</span>xmlTextWriter<span style="color: #008000;">.</span><span style="color: #0000FF;">BaseStream</span><span style="color: #008000;">;</span>
      xmlString <span style="color: #008000;">=</span> UTF8ByteArrayToString<span style="color: #008000;">&#40;</span>memoryStream<span style="color: #008000;">.</span><span style="color: #0000FF;">ToArray</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>      <span style="color: #0600FF; font-weight: bold;">return</span> xmlString<span style="color: #008000;">;</span>
   <span style="color: #008000;">&#125;</span>
   <span style="color: #0600FF; font-weight: bold;">catch</span>
   <span style="color: #008000;">&#123;</span>
      <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Empty</span><span style="color: #008000;">;</span>
   <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// Reconstruct an object from an XML string</span>
<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;xml&quot;&gt;&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;&lt;/returns&gt;</span>
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> T DeserializeObject<span style="color: #008000;">&lt;/</span>t<span style="color: #008000;">&gt;&lt;</span>t<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> xml<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
   XmlSerializer xs <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> XmlSerializer<span style="color: #008000;">&#40;</span><span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>T<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
   MemoryStream memoryStream <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> MemoryStream<span style="color: #008000;">&#40;</span>StringToUTF8ByteArray<span style="color: #008000;">&#40;</span>xml<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
   XmlTextWriter xmlTextWriter <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> XmlTextWriter<span style="color: #008000;">&#40;</span>memoryStream, Encoding<span style="color: #008000;">.</span><span style="color: #0000FF;">UTF8</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
   <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #008000;">&#40;</span>T<span style="color: #008000;">&#41;</span>xs<span style="color: #008000;">.</span><span style="color: #0000FF;">Deserialize</span><span style="color: #008000;">&#40;</span>memoryStream<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&lt;/</span>t<span style="color: #008000;">&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.nareshjois.com/2008/12/serialize-and-deserialize-object-as-xml/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vista Style Command link</title>
		<link>http://www.nareshjois.com/2008/11/vista-style-command-link/</link>
		<comments>http://www.nareshjois.com/2008/11/vista-style-command-link/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 10:45:35 +0000</pubDate>
		<dc:creator>naresh</dc:creator>
				<category><![CDATA[.net Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Vista Commandlink]]></category>

		<guid isPermaLink="false">http://www.nareshjois.com/?p=8</guid>
		<description><![CDATA[Have you obeserved the new taskdialog in vista, (May I am the last one to write about this), but sure looks great, and it is easy to implement, thre are lots of versions out there but like this the most, so here is the code using System; using System.ComponentModel; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; [...]]]></description>
			<content:encoded><![CDATA[<p>Have you obeserved the new taskdialog in vista, (May I am the last one to write about this), but sure looks great, and it is easy to implement,<br />
<img class="alignnone size-full wp-image-9" title="Vista Commanslinks" src="http://www.nareshjois.com/wp-content/uploads/2008/11/commandlinks.jpg" alt="" width="407" height="406" /><br />
thre are lots of versions out there but like this the most, so here is the code</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.ComponentModel</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Drawing</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Drawing.Drawing2D</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Drawing.Imaging</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Windows.Forms</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">namespace</span> CommandLink
<span style="color: #008000;">&#123;</span>
    <span style="color: #008000;">&#91;</span>ToolboxBitmap<span style="color: #008000;">&#40;</span><span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>Button<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
    <span style="color: #008000;">&#91;</span>DefaultEvent<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Click&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">partial</span> <span style="color: #6666cc; font-weight: bold;">class</span> CommandLink <span style="color: #008000;">:</span> Button
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> CommandLink<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            InitializeComponent<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DoubleBuffered</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Smooth redrawing</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ImageVerticalAlign</span> <span style="color: #008000;">=</span> VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Middle</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Set Default</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080;">#region Fields---------------------------------</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">enum</span> State
        <span style="color: #008000;">&#123;</span>
            Normal,
            Hover,
            Pushed,
            Disabled
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">enum</span> VerticalAlign
        <span style="color: #008000;">&#123;</span>
            Top,
            Middle,
            Bottom
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> State state <span style="color: #008000;">=</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Normal</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">int</span> offset <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> headerText <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Header Text&quot;</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> descriptionText <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Description&quot;</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> Bitmap image<span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> Bitmap grayImage<span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> Size imageSize <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Size<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">24</span>, <span style="color: #FF0000;">24</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> VerticalAlign imageAlign <span style="color: #008000;">=</span> VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Top</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> VerticalAlign textAlign <span style="color: #008000;">=</span> VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Middle</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> Font descriptFont<span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080;">#endregion</span>
&nbsp;
        <span style="color: #008080;">#region Properties----------------------------</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008080; font-style: italic;">/// Gets or sets the string associated with the Header text of the control.</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008000;">&#91;</span>Category<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Command Appearance&quot;</span><span style="color: #008000;">&#41;</span>,
         Browsable<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span>,
         DefaultValue<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Header Text&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> HeaderText
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> headerText<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                headerText <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008080; font-style: italic;">/// Gets or sets the string associated with the Description text of the control.</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008000;">&#91;</span>Category<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Command Appearance&quot;</span><span style="color: #008000;">&#41;</span>,
         Browsable<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span>,
         DefaultValue<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Description&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> DescriptionText
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> descriptionText<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                descriptionText <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008080; font-style: italic;">/// Gets or sets the left-hand Bitmap object of the control.</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008000;">&#91;</span>Category<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Command Appearance&quot;</span><span style="color: #008000;">&#41;</span>,
         Browsable<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span>,
         DefaultValue<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Bitmap Image
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> image<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                <span style="color: #008080; font-style: italic;">//Clean up</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>image <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                    image<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>grayImage <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                    grayImage<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                image <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>image <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                    grayImage <span style="color: #008000;">=</span> GetGrayscale<span style="color: #008000;">&#40;</span>image<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//generate image for disabled state</span>
                <span style="color: #0600FF; font-weight: bold;">else</span>
                    grayImage <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008080; font-style: italic;">/// Gets or sets the target size of the Image object.</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008000;">&#91;</span>Category<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Command Appearance&quot;</span><span style="color: #008000;">&#41;</span>,
         Browsable<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span>,
         DefaultValue<span style="color: #008000;">&#40;</span><span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>Size<span style="color: #008000;">&#41;</span>, <span style="color: #666666;">&quot;24,24&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Size ImageScalingSize
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> imageSize<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                imageSize <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008080; font-style: italic;">/// Gets or sets the alignment of the Image object along the vertical axis.</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008000;">&#91;</span>Category<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Command Appearance&quot;</span><span style="color: #008000;">&#41;</span>,
         Browsable<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span>,
         DefaultValue<span style="color: #008000;">&#40;</span>VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Top</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> VerticalAlign ImageVerticalAlign
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> imageAlign<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                imageAlign <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008080; font-style: italic;">/// Gets or sets the alignment of the displayed text along the vertical axis.</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008000;">&#91;</span>Category<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Command Appearance&quot;</span><span style="color: #008000;">&#41;</span>,
         Browsable<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span>,
         DefaultValue<span style="color: #008000;">&#40;</span>VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Middle</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> VerticalAlign TextVerticalAlign
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> textAlign<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                textAlign <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008080; font-style: italic;">/// Gets or sets the Font object that will be applied to the header and description strings.</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008000;">&#91;</span>Category<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Command Appearance&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">override</span> Font Font
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Font</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Font</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #008080; font-style: italic;">//Clean up</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>descriptFont <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                    descriptFont<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #008080; font-style: italic;">//Update the description font, which is the same just 3 sizes smaller</span>
                descriptFont <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Font<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Font</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FontFamily</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Font</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Size</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">3</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008080; font-style: italic;">/// Gets a string representation of the header and description strings.</span>
        <span style="color: #008080; font-style: italic;">///</span>
        <span style="color: #008000;">&#91;</span>Browsable<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">string</span> Text
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">HeaderText</span> <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;: &quot;</span> <span style="color: #008000;">+</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DescriptionText</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080;">#endregion</span>
&nbsp;
        <span style="color: #008080;">#region Events-----------------------------------</span>
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> OnPaint<span style="color: #008000;">&#40;</span>PaintEventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            DrawBackground<span style="color: #008000;">&#40;</span>e<span style="color: #008000;">.</span><span style="color: #0000FF;">Graphics</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Focused</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> state <span style="color: #008000;">==</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Normal</span><span style="color: #008000;">&#41;</span>
                DrawHighlight<span style="color: #008000;">&#40;</span>e<span style="color: #008000;">.</span><span style="color: #0000FF;">Graphics</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">switch</span> <span style="color: #008000;">&#40;</span>state<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Normal</span><span style="color: #008000;">:</span>
                    DrawNormalState<span style="color: #008000;">&#40;</span>e<span style="color: #008000;">.</span><span style="color: #0000FF;">Graphics</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Hover</span><span style="color: #008000;">:</span>
                    DrawHoverState<span style="color: #008000;">&#40;</span>e<span style="color: #008000;">.</span><span style="color: #0000FF;">Graphics</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Pushed</span><span style="color: #008000;">:</span>
                    DrawPushedState<span style="color: #008000;">&#40;</span>e<span style="color: #008000;">.</span><span style="color: #0000FF;">Graphics</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Disabled</span><span style="color: #008000;">:</span>
                    DrawNormalState<span style="color: #008000;">&#40;</span>e<span style="color: #008000;">.</span><span style="color: #0000FF;">Graphics</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//DrawForeground takes care of drawing the disabled state</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">default</span><span style="color: #008000;">:</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> OnKeyPress<span style="color: #008000;">&#40;</span>KeyPressEventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>e<span style="color: #008000;">.</span><span style="color: #0000FF;">KeyChar</span> <span style="color: #008000;">==</span> Convert<span style="color: #008000;">.</span><span style="color: #0000FF;">ToChar</span><span style="color: #008000;">&#40;</span>Keys<span style="color: #008000;">.</span><span style="color: #0000FF;">Enter</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">PerformClick</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">OnKeyPress</span><span style="color: #008000;">&#40;</span>e<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> OnGotFocus<span style="color: #008000;">&#40;</span>EventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">OnGotFocus</span><span style="color: #008000;">&#40;</span>e<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> OnLostFocus<span style="color: #008000;">&#40;</span>EventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">OnLostFocus</span><span style="color: #008000;">&#40;</span>e<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> OnMouseEnter<span style="color: #008000;">&#40;</span>EventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Enabled</span><span style="color: #008000;">&#41;</span>
                state <span style="color: #008000;">=</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Hover</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">OnMouseEnter</span><span style="color: #008000;">&#40;</span>e<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> OnMouseLeave<span style="color: #008000;">&#40;</span>EventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Enabled</span><span style="color: #008000;">&#41;</span>
                state <span style="color: #008000;">=</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Normal</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">OnMouseLeave</span><span style="color: #008000;">&#40;</span>e<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> OnMouseDown<span style="color: #008000;">&#40;</span>MouseEventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Enabled</span><span style="color: #008000;">&#41;</span>
                state <span style="color: #008000;">=</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Pushed</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">OnMouseDown</span><span style="color: #008000;">&#40;</span>e<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> OnMouseUp<span style="color: #008000;">&#40;</span>MouseEventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Enabled</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">RectangleToScreen</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ClientRectangle</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Contains</span><span style="color: #008000;">&#40;</span>Cursor<span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                    state <span style="color: #008000;">=</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Hover</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">else</span>
                    state <span style="color: #008000;">=</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Normal</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">OnMouseUp</span><span style="color: #008000;">&#40;</span>e<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> OnEnabledChanged<span style="color: #008000;">&#40;</span>EventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Enabled</span><span style="color: #008000;">&#41;</span>
                state <span style="color: #008000;">=</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Normal</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">else</span>
                state <span style="color: #008000;">=</span> State<span style="color: #008000;">.</span><span style="color: #0000FF;">Disabled</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Refresh</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">OnEnabledChanged</span><span style="color: #008000;">&#40;</span>e<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">protected</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">void</span> Dispose<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">bool</span> disposing<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>disposing <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> components <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                image<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                grayImage<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                descriptFont<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                components<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">base</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span>disposing<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080;">#endregion</span>
&nbsp;
        <span style="color: #008080;">#region Drawing Methods-------------------------</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Draws the light-blue rectangle around the button when it is focused (by Tab for example)</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> DrawHighlight<span style="color: #008000;">&#40;</span>Graphics g<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #008080; font-style: italic;">//The outline is drawn inside the button</span>
            GraphicsPath innerRegion <span style="color: #008000;">=</span> RoundedRect<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">3</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">3</span>, <span style="color: #FF0000;">3</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//----Shift the inner region inwards</span>
            Matrix translate <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Matrix<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            translate<span style="color: #008000;">.</span><span style="color: #0000FF;">Translate</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            innerRegion<span style="color: #008000;">.</span><span style="color: #0000FF;">Transform</span><span style="color: #008000;">&#40;</span>translate<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            translate<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008080; font-style: italic;">//-----</span>
&nbsp;
            Pen inlinePen <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Pen<span style="color: #008000;">&#40;</span>Color<span style="color: #008000;">.</span><span style="color: #0000FF;">FromArgb</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">192</span>, <span style="color: #FF0000;">233</span>, <span style="color: #FF0000;">243</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Light-blue</span>
&nbsp;
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">SmoothingMode</span> <span style="color: #008000;">=</span> SmoothingMode<span style="color: #008000;">.</span><span style="color: #0000FF;">AntiAlias</span><span style="color: #008000;">;</span>
&nbsp;
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawPath</span><span style="color: #008000;">&#40;</span>inlinePen, innerRegion<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Clean-up</span>
            inlinePen<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            innerRegion<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Draws the button when the mouse is over it</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> DrawHoverState<span style="color: #008000;">&#40;</span>Graphics g<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            GraphicsPath outerRegion <span style="color: #008000;">=</span> RoundedRect<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">3</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            GraphicsPath innerRegion <span style="color: #008000;">=</span> RoundedRect<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">3</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">3</span>, <span style="color: #FF0000;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008080; font-style: italic;">//----Shift the inner region inwards</span>
            Matrix translate <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Matrix<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            translate<span style="color: #008000;">.</span><span style="color: #0000FF;">Translate</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            innerRegion<span style="color: #008000;">.</span><span style="color: #0000FF;">Transform</span><span style="color: #008000;">&#40;</span>translate<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            translate<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008080; font-style: italic;">//-----</span>
            Rectangle backgroundRect <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Rectangle<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">1</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">2</span>, <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">*</span> 0<span style="color: #008000;">.</span>75f<span style="color: #008000;">&#41;</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            Pen outlinePen <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Pen<span style="color: #008000;">&#40;</span>Color<span style="color: #008000;">.</span><span style="color: #0000FF;">FromArgb</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">189</span>, <span style="color: #FF0000;">189</span>, <span style="color: #FF0000;">189</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//SystemColors.ControlDark</span>
            Pen inlinePen <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Pen<span style="color: #008000;">&#40;</span>Color<span style="color: #008000;">.</span><span style="color: #0000FF;">FromArgb</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">245</span>, <span style="color: #FF0000;">255</span>, <span style="color: #FF0000;">255</span>, <span style="color: #FF0000;">255</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Slightly transparent white</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Gradient brush for the background, goes from white to transparent 75% of the way down</span>
            LinearGradientBrush backBrush <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> LinearGradientBrush<span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> Point<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span>, <span style="color: #008000;">new</span> Point<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, backgroundRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span>, Color<span style="color: #008000;">.</span><span style="color: #0000FF;">White</span>, Color<span style="color: #008000;">.</span><span style="color: #0000FF;">Transparent</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            backBrush<span style="color: #008000;">.</span><span style="color: #0000FF;">WrapMode</span> <span style="color: #008000;">=</span> WrapMode<span style="color: #008000;">.</span><span style="color: #0000FF;">TileFlipX</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//keeps the gradient smooth incase of the glitch where there's an extra gradient line</span>
&nbsp;
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">SmoothingMode</span> <span style="color: #008000;">=</span> SmoothingMode<span style="color: #008000;">.</span><span style="color: #0000FF;">AntiAlias</span><span style="color: #008000;">;</span>
&nbsp;
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">FillRectangle</span><span style="color: #008000;">&#40;</span>backBrush, backgroundRect<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawPath</span><span style="color: #008000;">&#40;</span>inlinePen, innerRegion<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawPath</span><span style="color: #008000;">&#40;</span>outlinePen, outerRegion<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Text/Image</span>
            offset <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Text/Image doesn't move</span>
            DrawForeground<span style="color: #008000;">&#40;</span>g<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Clean up</span>
            outlinePen<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            inlinePen<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            outerRegion<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            innerRegion<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Draws the button when it's clicked down</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> DrawPushedState<span style="color: #008000;">&#40;</span>Graphics g<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            GraphicsPath outerRegion <span style="color: #008000;">=</span> RoundedRect<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">3</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            GraphicsPath innerRegion <span style="color: #008000;">=</span> RoundedRect<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">3</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">3</span>, <span style="color: #FF0000;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008080; font-style: italic;">//----Shift the inner region inwards</span>
            Matrix translate <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Matrix<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            translate<span style="color: #008000;">.</span><span style="color: #0000FF;">Translate</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            innerRegion<span style="color: #008000;">.</span><span style="color: #0000FF;">Transform</span><span style="color: #008000;">&#40;</span>translate<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            translate<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008080; font-style: italic;">//-----</span>
            Rectangle backgroundRect <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Rectangle<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">1</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">3</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">3</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            Pen outlinePen <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Pen<span style="color: #008000;">&#40;</span>Color<span style="color: #008000;">.</span><span style="color: #0000FF;">FromArgb</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">167</span>, <span style="color: #FF0000;">167</span>, <span style="color: #FF0000;">167</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Outline is darker than normal</span>
            Pen inlinePen <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Pen<span style="color: #008000;">&#40;</span>Color<span style="color: #008000;">.</span><span style="color: #0000FF;">FromArgb</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">227</span>, <span style="color: #FF0000;">227</span>, <span style="color: #FF0000;">227</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Darker white</span>
            SolidBrush backBrush <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SolidBrush<span style="color: #008000;">&#40;</span>Color<span style="color: #008000;">.</span><span style="color: #0000FF;">FromArgb</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">234</span>, <span style="color: #FF0000;">234</span>, <span style="color: #FF0000;">234</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//SystemColors.ControlLight</span>
&nbsp;
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">SmoothingMode</span> <span style="color: #008000;">=</span> SmoothingMode<span style="color: #008000;">.</span><span style="color: #0000FF;">AntiAlias</span><span style="color: #008000;">;</span>
&nbsp;
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">FillRectangle</span><span style="color: #008000;">&#40;</span>backBrush, backgroundRect<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawPath</span><span style="color: #008000;">&#40;</span>inlinePen, innerRegion<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawPath</span><span style="color: #008000;">&#40;</span>outlinePen, outerRegion<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Text/Image</span>
            offset <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//moves image inwards 1 pixel (x and y) to create the illusion that the button was pushed</span>
            DrawForeground<span style="color: #008000;">&#40;</span>g<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Clean up</span>
            outlinePen<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            inlinePen<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            outerRegion<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            innerRegion<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Draws the button in it's regular state</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> DrawNormalState<span style="color: #008000;">&#40;</span>Graphics g<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #008080; font-style: italic;">//Nothing needs to be drawn but the text and image</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Text/Image</span>
            offset <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//Text/Image doesn't move</span>
            DrawForeground<span style="color: #008000;">&#40;</span>g<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Draws Text and Image</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> DrawForeground<span style="color: #008000;">&#40;</span>Graphics g<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #008080; font-style: italic;">//Make sure drawing is of good quality</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">TextRenderingHint</span> <span style="color: #008000;">=</span> <span style="color: #000000;">System.<span style="color: #0000FF;">Drawing</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">TextRenderingHint</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ClearTypeGridFit</span><span style="color: #008000;">;</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">PixelOffsetMode</span> <span style="color: #008000;">=</span> PixelOffsetMode<span style="color: #008000;">.</span><span style="color: #0000FF;">HighQuality</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Coordinates-------------------------------</span>
            <span style="color: #6666cc; font-weight: bold;">int</span> imageLeft <span style="color: #008000;">=</span> <span style="color: #FF0000;">9</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">int</span> imageTop <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">int</span> textLeft <span style="color: #008000;">=</span> <span style="color: #FF0000;">20</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>image <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                textLeft <span style="color: #008000;">=</span> imageLeft <span style="color: #008000;">+</span> imageSize<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">+</span> <span style="color: #FF0000;">5</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//adjust the text left coordinate to accomodate the image</span>
            <span style="color: #008080; font-style: italic;">//</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Text Layout-------------------------------</span>
            <span style="color: #6666cc; font-weight: bold;">string</span> wrappedDescriptText <span style="color: #008000;">=</span> WordWrap<span style="color: #008000;">&#40;</span>descriptionText, descriptFont, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">-</span> <span style="color: #008000;">&#40;</span>textLeft <span style="color: #008000;">+</span> offset<span style="color: #008000;">&#41;</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">5</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Gets the width/height of the text once it's drawn out</span>
            SizeF headerLayout <span style="color: #008000;">=</span> g<span style="color: #008000;">.</span><span style="color: #0000FF;">MeasureString</span><span style="color: #008000;">&#40;</span>headerText, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Font</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            SizeF descriptLayout <span style="color: #008000;">=</span> g<span style="color: #008000;">.</span><span style="color: #0000FF;">MeasureString</span><span style="color: #008000;">&#40;</span>wrappedDescriptText, descriptFont<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Merge the two sizes into one big rectangle</span>
            Rectangle totalRect <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Rectangle<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span><span style="color: #008000;">&#41;</span>Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Max</span><span style="color: #008000;">&#40;</span>headerLayout<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span>, descriptLayout<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#41;</span>, <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span>headerLayout<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">+</span> descriptLayout<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Align the text rectangle</span>
            totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> textLeft<span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">switch</span> <span style="color: #008000;">&#40;</span>textAlign<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Top</span><span style="color: #008000;">:</span>
                    totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">4</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Middle</span><span style="color: #008000;">:</span>
                    totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">/</span> <span style="color: #FF0000;">2</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">-</span> <span style="color: #008000;">&#40;</span>totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">/</span> <span style="color: #FF0000;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Bottom</span><span style="color: #008000;">:</span>
                    totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">-</span> totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">default</span><span style="color: #008000;">:</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #008080; font-style: italic;">//---------------------------------------------------</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Align the top of the image---------------------</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>image <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">switch</span> <span style="color: #008000;">&#40;</span>imageAlign<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0600FF; font-weight: bold;">case</span> VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Top</span><span style="color: #008000;">:</span>
                        imageTop <span style="color: #008000;">=</span> <span style="color: #FF0000;">4</span><span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">case</span> VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Middle</span><span style="color: #008000;">:</span>
                        imageTop <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span>imageSize<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">/</span> <span style="color: #FF0000;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">case</span> VerticalAlign<span style="color: #008000;">.</span><span style="color: #0000FF;">Bottom</span><span style="color: #008000;">:</span>
                        imageTop <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">-</span> imageSize<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">default</span><span style="color: #008000;">:</span>
                        <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #008080; font-style: italic;">//-----------------------------------------------</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Brushes--------------------------------</span>
            <span style="color: #008080; font-style: italic;">// Determine text color depending on whether the control is enabled or not</span>
            Color textColor <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ForeColor</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Enabled</span><span style="color: #008000;">&#41;</span>
                textColor <span style="color: #008000;">=</span> SystemColors<span style="color: #008000;">.</span><span style="color: #0000FF;">GrayText</span><span style="color: #008000;">;</span>
&nbsp;
            SolidBrush textBrush <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SolidBrush<span style="color: #008000;">&#40;</span>textColor<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008080; font-style: italic;">//------------------------------------------</span>
&nbsp;
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawString</span><span style="color: #008000;">&#40;</span>headerText, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Font</span>, textBrush, totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Left</span> <span style="color: #008000;">+</span> offset, totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Top</span> <span style="color: #008000;">+</span> offset<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawString</span><span style="color: #008000;">&#40;</span>wrappedDescriptText,
                         descriptFont,
                         textBrush,
                         totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Left</span> <span style="color: #008000;">+</span> <span style="color: #FF0000;">1</span> <span style="color: #008000;">+</span> offset,
                         totalRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Bottom</span> <span style="color: #008000;">-</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span><span style="color: #008000;">&#41;</span>descriptLayout<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">+</span> offset<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008080; font-style: italic;">//Note: the + 1 in &quot;totalRect.Left + 1 + offset&quot; compensates for GDI+ inconsistency</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>image <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Enabled</span><span style="color: #008000;">&#41;</span>
                    g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawImage</span><span style="color: #008000;">&#40;</span>image, <span style="color: #008000;">new</span> Rectangle<span style="color: #008000;">&#40;</span>imageLeft <span style="color: #008000;">+</span> offset, imageTop <span style="color: #008000;">+</span> offset, imageSize<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span>, imageSize<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">else</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #008080; font-style: italic;">//make sure there is a gray-image</span>
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>grayImage <span style="color: #008000;">==</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                        grayImage <span style="color: #008000;">=</span> GetGrayscale<span style="color: #008000;">&#40;</span>image<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//generate grayscale now</span>
&nbsp;
                    g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawImage</span><span style="color: #008000;">&#40;</span>grayImage, <span style="color: #008000;">new</span> Rectangle<span style="color: #008000;">&#40;</span>imageLeft <span style="color: #008000;">+</span> offset, imageTop <span style="color: #008000;">+</span> offset, imageSize<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span>, imageSize<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Clean-up</span>
            textBrush<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Draws the solid background of the control</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> DrawBackground<span style="color: #008000;">&#40;</span>Graphics g<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            SolidBrush backBrush <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SolidBrush<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">BackColor</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">FillRectangle</span><span style="color: #008000;">&#40;</span>backBrush, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DisplayRectangle</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            backBrush<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #008080;">#endregion</span>
&nbsp;
        <span style="color: #008080;">#region Helper Methods--------------------------</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> GraphicsPath RoundedRect<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> width, <span style="color: #6666cc; font-weight: bold;">int</span> height, <span style="color: #6666cc; font-weight: bold;">int</span> radius<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            RectangleF baseRect <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> RectangleF<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, width, height<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">float</span> diameter <span style="color: #008000;">=</span> radius <span style="color: #008000;">*</span> 2<span style="color: #008000;">.</span>0f<span style="color: #008000;">;</span>
            SizeF sizeF <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> SizeF<span style="color: #008000;">&#40;</span>diameter, diameter<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            RectangleF arc <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> RectangleF<span style="color: #008000;">&#40;</span>baseRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Location</span>, sizeF<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            GraphicsPath path <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> GraphicsPath<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">// top left arc</span>
            path<span style="color: #008000;">.</span><span style="color: #0000FF;">AddArc</span><span style="color: #008000;">&#40;</span>arc, <span style="color: #FF0000;">180</span>, <span style="color: #FF0000;">90</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">// top right arc</span>
            arc<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> baseRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Right</span> <span style="color: #008000;">-</span> diameter<span style="color: #008000;">;</span>
            path<span style="color: #008000;">.</span><span style="color: #0000FF;">AddArc</span><span style="color: #008000;">&#40;</span>arc, <span style="color: #FF0000;">270</span>, <span style="color: #FF0000;">90</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">// bottom right arc</span>
            arc<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> baseRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Bottom</span> <span style="color: #008000;">-</span> diameter<span style="color: #008000;">;</span>
            path<span style="color: #008000;">.</span><span style="color: #0000FF;">AddArc</span><span style="color: #008000;">&#40;</span>arc, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">90</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">// bottom left arc</span>
            arc<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> baseRect<span style="color: #008000;">.</span><span style="color: #0000FF;">Left</span><span style="color: #008000;">;</span>
            path<span style="color: #008000;">.</span><span style="color: #0000FF;">AddArc</span><span style="color: #008000;">&#40;</span>arc, <span style="color: #FF0000;">90</span>, <span style="color: #FF0000;">90</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            path<span style="color: #008000;">.</span><span style="color: #0000FF;">CloseFigure</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> path<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> Bitmap GetGrayscale<span style="color: #008000;">&#40;</span>Image original<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #008080; font-style: italic;">//Set up the drawing surface</span>
            Bitmap grayscale <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Bitmap<span style="color: #008000;">&#40;</span>original<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span>, original<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            Graphics g <span style="color: #008000;">=</span> Graphics<span style="color: #008000;">.</span><span style="color: #0000FF;">FromImage</span><span style="color: #008000;">&#40;</span>grayscale<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Grayscale Color Matrix</span>
            ColorMatrix colorMatrix <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> ColorMatrix<span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> <span style="color: #6666cc; font-weight: bold;">float</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>
                                                      <span style="color: #008000;">&#123;</span>
                                                         <span style="color: #008000;">new</span> <span style="color: #6666cc; font-weight: bold;">float</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#123;</span>0<span style="color: #008000;">.</span>3f, 0<span style="color: #008000;">.</span>3f, 0<span style="color: #008000;">.</span>3f, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span><span style="color: #008000;">&#125;</span>,
                                                         <span style="color: #008000;">new</span> <span style="color: #6666cc; font-weight: bold;">float</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#123;</span>0<span style="color: #008000;">.</span>59f, 0<span style="color: #008000;">.</span>59f, 0<span style="color: #008000;">.</span>59f, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span><span style="color: #008000;">&#125;</span>,
                                                         <span style="color: #008000;">new</span> <span style="color: #6666cc; font-weight: bold;">float</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#123;</span>0<span style="color: #008000;">.</span>11f, 0<span style="color: #008000;">.</span>11f, 0<span style="color: #008000;">.</span>11f, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span><span style="color: #008000;">&#125;</span>,
                                                         <span style="color: #008000;">new</span> <span style="color: #6666cc; font-weight: bold;">float</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#123;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">1</span>, <span style="color: #FF0000;">0</span><span style="color: #008000;">&#125;</span>,
                                                         <span style="color: #008000;">new</span> <span style="color: #6666cc; font-weight: bold;">float</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#123;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">1</span><span style="color: #008000;">&#125;</span>
                                                      <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Create attributes</span>
            ImageAttributes att <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> ImageAttributes<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            att<span style="color: #008000;">.</span><span style="color: #0000FF;">SetColorMatrix</span><span style="color: #008000;">&#40;</span>colorMatrix<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Draw the image with the new attributes</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">DrawImage</span><span style="color: #008000;">&#40;</span>original, <span style="color: #008000;">new</span> Rectangle<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, original<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span>, original<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span>, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, original<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span>, original<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span>, GraphicsUnit<span style="color: #008000;">.</span><span style="color: #0000FF;">Pixel</span>, att<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Clean up</span>
            g<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">return</span> grayscale<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">string</span> WordWrap<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> originalString, Font font, <span style="color: #6666cc; font-weight: bold;">int</span> targetWidth<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> words <span style="color: #008000;">=</span> originalString<span style="color: #008000;">.</span><span style="color: #0000FF;">Split</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">' '</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #6666cc; font-weight: bold;">string</span> wrappedString <span style="color: #008000;">=</span> words<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #008080; font-style: italic;">//Add one word at a time, making sure it doesn't go over</span>
            <span style="color: #0600FF; font-weight: bold;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> i <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span> i <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> words<span style="color: #008000;">.</span><span style="color: #0000FF;">Length</span><span style="color: #008000;">;</span> i<span style="color: #008000;">++</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #008080; font-style: italic;">//Use TextRenderer since it has a static measure function</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>TextRenderer<span style="color: #008000;">.</span><span style="color: #0000FF;">MeasureText</span><span style="color: #008000;">&#40;</span>wrappedString <span style="color: #008000;">+</span> <span style="color: #666666;">&quot; &quot;</span> <span style="color: #008000;">+</span> words<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>, font<span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span> <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;=</span> targetWidth<span style="color: #008000;">&#41;</span>
                    wrappedString <span style="color: #008000;">+=</span> <span style="color: #666666;">&quot; &quot;</span> <span style="color: #008000;">+</span> words<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//next word fits on the same line</span>
                <span style="color: #0600FF; font-weight: bold;">else</span>
                    wrappedString <span style="color: #008000;">+=</span> Environment<span style="color: #008000;">.</span><span style="color: #0000FF;">NewLine</span> <span style="color: #008000;">+</span> words<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//start it on the next line</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">return</span> wrappedString<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> PerformClick<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">OnClick</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #008080;">#endregion</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>I will also post for the complete task dialog in my next post.<br />
* I did not write this code, credit to whomever who did this</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nareshjois.com/2008/11/vista-style-command-link/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to make Linq distinct work for you</title>
		<link>http://www.nareshjois.com/2008/11/how-to-make-linq-distinct-work-for-you/</link>
		<comments>http://www.nareshjois.com/2008/11/how-to-make-linq-distinct-work-for-you/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 10:28:32 +0000</pubDate>
		<dc:creator>naresh</dc:creator>
				<category><![CDATA[.net Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Linq]]></category>

		<guid isPermaLink="false">http://www.nareshjois.com/?p=6</guid>
		<description><![CDATA[Have you even tried using linq on your objects then wanted to a distinct but couldn&#8217;t ?, Heres why this does not happen, .net doesn&#8217;t know how to distinguish between two custome objects (even though this looks obvious in most of the cases), So what should we do ? You have to exted the IEqualityComparer [...]]]></description>
			<content:encoded><![CDATA[<p>Have you even tried using linq on your objects then wanted to a distinct but couldn&#8217;t ?, Heres why this does not happen, .net doesn&#8217;t know how to distinguish between two custome objects (even though this looks obvious in most of the cases), So what should we do ?</p>
<p>You have to exted the IEqualityComparer with a custom extension which would allow you to compare your custom objects</p>
<p>Though mine is simple, I am sure that you will make more use of this than me</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;">    <span style="color: #6666cc; font-weight: bold;">class</span> Comparer <span style="color: #008000;">:</span> IEqualityComparer<span style="color: #008000;">&lt;</span>GridDetails<span style="color: #008000;">&gt;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">bool</span> Equals<span style="color: #008000;">&#40;</span>GridDetails x, GridDetails y<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span> <span style="color: #008000;">==</span> y<span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">int</span> GetHashCode<span style="color: #008000;">&#40;</span>GridDetails obj<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> obj<span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetHashCode</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span></pre></div></div>

<p>An Example usage would be :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:consolas, monaco;"><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">grid</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DataSource</span> <span style="color: #008000;">=</span> data<span style="color: #008000;">.</span><span style="color: #0000FF;">ToList</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Distinct</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> Aptra<span style="color: #008000;">.</span><span style="color: #0000FF;">Profile</span><span style="color: #008000;">.</span><span style="color: #0000FF;">BO</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Comparer</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.nareshjois.com/2008/11/how-to-make-linq-distinct-work-for-you/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

