<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;Dk4MQn8zfCp7ImA9WhRUGU4.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786</id><updated>2012-01-30T06:49:43.184-08:00</updated><category term="Reporting" /><category term="winform" /><category term="LINQ" /><category term="Reflection" /><category term="DataGridView" /><category term="File" /><category term="Collections" /><category term="refactoring" /><category term="TreeView" /><category term="TFS" /><category term="GridView" /><category term="Dynamic Data" /><category term="String" /><category term="DataTable" /><category term="lambda" /><category term="delegates" /><category term="Registry" /><category term="listbox" /><category term="WPF" /><category term="Ajax" /><category term="Excel" /><title>C# and ASP.NET Code</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://c-sharpe.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/CCodeAndnet" /><feedburner:info uri="ccodeandnet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CU8CQno4cSp7ImA9WhRRGEg.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-8229042108737382079</id><published>2011-12-02T11:17:00.001-08:00</published><updated>2011-12-02T11:24:23.439-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-02T11:24:23.439-08:00</app:edited><title>Delete ScriptManager History</title><content type="html">Well, I have not found a way to clear &lt;strong&gt;ScriptManager&lt;/strong&gt; history proper, but&amp;nbsp;the workaround&amp;nbsp;&amp;nbsp;is to use the &lt;strong&gt;AddHistoryPoint&lt;/strong&gt; method and set the value of your property to "0":&lt;br /&gt;
&lt;br /&gt;
ScriptManager1.AddHistoryPoint(&lt;span style="color: #a31515;"&gt;"myKey"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"0"&lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-8229042108737382079?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/82WYv5kmkz-1dvitcTkyKs_jZZw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/82WYv5kmkz-1dvitcTkyKs_jZZw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/82WYv5kmkz-1dvitcTkyKs_jZZw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/82WYv5kmkz-1dvitcTkyKs_jZZw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/GvKevb7C7j4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/8229042108737382079/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2011/12/delete-scriptmanager-history.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/8229042108737382079?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/8229042108737382079?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/GvKevb7C7j4/delete-scriptmanager-history.html" title="Delete ScriptManager History" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2011/12/delete-scriptmanager-history.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IDR386fSp7ImA9WhdaFUs.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-96341551934391541</id><published>2011-10-25T10:59:00.000-07:00</published><updated>2011-10-25T10:59:36.115-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-25T10:59:36.115-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GridView" /><title>Check if GridView Column Exists</title><content type="html">If you have a &lt;span style="color: #2b91af;"&gt;DataRowView &lt;/span&gt;you can use the following extension method to check if a GridView column exists:&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;public static bool ColumnExists( &lt;span style="color: blue;"&gt;this&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;DataRowView &lt;/span&gt;rowData,&amp;nbsp; &lt;span style="color: blue;"&gt;string&amp;nbsp; &lt;/span&gt;fldToCheck)&lt;br /&gt;{&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&lt;span style="color: blue;"&gt;return &lt;/span&gt;rowData.Row.Table.Columns.Contains(fldToCheck);&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;}&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Normally, you would use it on RowDataBound event, e.g:&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)&lt;br /&gt;{&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&lt;span style="color: #2b91af;"&gt;DataRowView &lt;/span&gt;rowData = e.Row.DataItem as DataRowView;&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&lt;span style="color: blue;"&gt;string&amp;nbsp; &lt;/span&gt;fldToCheck = "MyFieldName";&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;if (e.Row.RowType == DataControlRowType.DataRow)&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;{&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rowData.ColumnExists(fldToCheck) ...&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-96341551934391541?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Tp0RZgSclIDcKKdQx697VIiOKM0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tp0RZgSclIDcKKdQx697VIiOKM0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Tp0RZgSclIDcKKdQx697VIiOKM0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tp0RZgSclIDcKKdQx697VIiOKM0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/9mQy-ACAfCo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/96341551934391541/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2011/10/check-if-gridview-column-exists.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/96341551934391541?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/96341551934391541?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/9mQy-ACAfCo/check-if-gridview-column-exists.html" title="Check if GridView Column Exists" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2011/10/check-if-gridview-column-exists.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08HQn44eCp7ImA9WhdaFEU.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-8867691013118599829</id><published>2011-10-17T13:58:00.000-07:00</published><updated>2011-10-24T12:50:33.030-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-24T12:50:33.030-07:00</app:edited><title>Modify Query String</title><content type="html">&lt;br /&gt;
If you build a hyperlink on a web page dynamically, sometimes you may need to append or modify an existing query string.&lt;br /&gt;
To modify a url with an existing query string, first grab the AbsoluteUrl property:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue;"&gt;string&lt;/span&gt; path = Request.Url.AbsolutePath ;&lt;br /&gt;
&lt;br /&gt;
This will give you a url wihout the query string portion. &lt;br /&gt;
&lt;br /&gt;
If you need to reuse an existing portion of the query string, you have to get it yourself, e.g:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue;"&gt;string&lt;/span&gt; key = Request.QueryString[&lt;span style="color: #a31515;"&gt;"key"&lt;/span&gt;];&lt;br /&gt;
&lt;span style="color: blue;"&gt;string&lt;/span&gt; path = Request.Url.AbsolutePath + "?key="+ key;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, you can build your url:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue;"&gt;string&lt;/span&gt; url&amp;nbsp; = path+ "&amp;amp;key2="+ myValue;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-8867691013118599829?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VV4K1NTPSyqvpqlZHp7RurAEA84/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VV4K1NTPSyqvpqlZHp7RurAEA84/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VV4K1NTPSyqvpqlZHp7RurAEA84/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VV4K1NTPSyqvpqlZHp7RurAEA84/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/vTH2e4gC3ZM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/8867691013118599829/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2011/10/modify-query-string.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/8867691013118599829?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/8867691013118599829?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/vTH2e4gC3ZM/modify-query-string.html" title="Modify Query String" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2011/10/modify-query-string.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQDRXY9eSp7ImA9WhdbFU4.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-3269092988025444113</id><published>2011-10-13T13:21:00.000-07:00</published><updated>2011-10-13T13:22:54.861-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-13T13:22:54.861-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GridView" /><title>Find GridView Column Index</title><content type="html">If you create G&lt;strong&gt;ridView&lt;/strong&gt; columns dynamically using the &lt;strong&gt;AutogenerateColumns&lt;/strong&gt; = true feature, sometimes you need to find a column index from the column name.&lt;br /&gt;
&lt;br /&gt;
I created an extension method to find a column index:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;int&lt;/span&gt; GetIndex&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;this&lt;/span&gt; DataRowView tableData&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;string&lt;/span&gt; fieldName&lt;span style="color: #808030;"&gt;)&lt;/span&gt;
        &lt;span style="color: purple;"&gt;{&lt;/span&gt;
            DataColumn dc &lt;span style="color: #808030;"&gt;=&lt;/span&gt; tableData&lt;span style="color: #808030;"&gt;.&lt;/span&gt;DataView&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Table&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Columns&lt;span style="color: #808030;"&gt;[&lt;/span&gt;fieldName&lt;span style="color: #808030;"&gt;]&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
            
            &lt;span style="color: maroon; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #808030;"&gt;(&lt;/span&gt;dc &lt;span style="color: #808030;"&gt;!&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;
            &lt;span style="color: purple;"&gt;{&lt;/span&gt;
                &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; dc&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Ordinal&lt;span style="color: purple;"&gt;;&lt;/span&gt;
            &lt;span style="color: purple;"&gt;}&lt;/span&gt;
            &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #808030;"&gt;-&lt;/span&gt;&lt;span style="color: #008c00;"&gt;1&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
        &lt;span style="color: purple;"&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
This is how you call from&amp;nbsp;the &lt;strong&gt;RowDataBound&lt;/strong&gt; event handler:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;DataRowView tableData &lt;span style="color: #808030;"&gt;=&lt;/span&gt; e&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Row&lt;span style="color: #808030;"&gt;.&lt;/span&gt;DataItem &lt;span style="color: maroon; font-weight: bold;"&gt;as&lt;/span&gt; DataRowView&lt;span style="color: purple;"&gt;;&lt;/span&gt;
&lt;span style="color: maroon; font-weight: bold;"&gt;int&lt;/span&gt; pos &lt;span style="color: #808030;"&gt;=&lt;/span&gt; tableData&lt;span style="color: #808030;"&gt;.&lt;/span&gt;GetIndex&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;MyFieldName&lt;/span&gt;&lt;span style="color: maroon;"&gt;"&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;                
&lt;span style="color: maroon; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #808030;"&gt;(&lt;/span&gt;pos &lt;span style="color: #808030;"&gt;!&lt;/span&gt;&lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: #808030;"&gt;-&lt;/span&gt;&lt;span style="color: #008c00;"&gt;1&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;{&lt;/span&gt;
&lt;span style="color: dimgrey;"&gt;   //do your thing&lt;/span&gt;
&lt;span style="color: purple;"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-3269092988025444113?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TBNnE06UVWdKowa854Yj3oji2vQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TBNnE06UVWdKowa854Yj3oji2vQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TBNnE06UVWdKowa854Yj3oji2vQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TBNnE06UVWdKowa854Yj3oji2vQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/dCvymJ5Qb8o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/3269092988025444113/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2011/10/find-gridview-column-index.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/3269092988025444113?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/3269092988025444113?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/dCvymJ5Qb8o/find-gridview-column-index.html" title="Find GridView Column Index" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2011/10/find-gridview-column-index.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIBR3s5fyp7ImA9WhdUE00.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-5954225423293534094</id><published>2011-07-27T13:26:00.000-07:00</published><updated>2011-09-29T05:49:16.527-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-29T05:49:16.527-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><title>WPF GridView Cell Borders</title><content type="html">If you populate a GridView programmatically, and you want to set its style, it's not obvious. &lt;br /&gt;
&lt;br /&gt;
The best approach I found is to set its style in XAML first, and then assign it in code. For example, this is how you would put borders under each row:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ListView.Resources&amp;gt;&lt;br /&gt;
&amp;lt;Style x:Key="itemstyle" TargetType="{x:Type ListViewItem}"&amp;gt; &lt;br /&gt;
&amp;lt;Setter Property="BorderThickness" Value="1" /&amp;gt;&lt;br /&gt;
&amp;lt;Setter Property="BorderBrush" Value="#BABABE" /&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/ListView.Resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, after you set the DataContext property in code, use:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;myListView.ItemContainerStyle = (Style)myListView.Resources["itemstyle"];&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-5954225423293534094?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Zyyc76ipFpJz0Tlv8bY2wxOFk-o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Zyyc76ipFpJz0Tlv8bY2wxOFk-o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Zyyc76ipFpJz0Tlv8bY2wxOFk-o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Zyyc76ipFpJz0Tlv8bY2wxOFk-o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/RNtM5hgqzCw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/5954225423293534094/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2011/07/gridview-cell-borders.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5954225423293534094?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5954225423293534094?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/RNtM5hgqzCw/gridview-cell-borders.html" title="WPF GridView Cell Borders" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2011/07/gridview-cell-borders.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04BR307fyp7ImA9WhZTE0o.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-5490968340014292446</id><published>2011-03-17T07:24:00.000-07:00</published><updated>2011-03-17T07:25:56.307-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-17T07:25:56.307-07:00</app:edited><title>Check QueryString for Null</title><content type="html">If you need to determine whether the &lt;strong&gt;Request.QueryString&lt;/strong&gt; is null and take some action depending on the result, it is not enough to check for null. QueryString is an &lt;strong&gt;HttpValueCollection&lt;/strong&gt; type, so even if the Request.Url does not have a query string appended to it, the value of the collection&amp;nbsp;is not going to be null. The proper way to check if the query string contains anything is to check for null and the Count property as well:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;span style="color: blue;"&gt;if&lt;span style="color: black;"&gt;(Request.QueryString!= &lt;/span&gt;&lt;span style="color: blue;"&gt;null&lt;/span&gt;&lt;span style="color: black;"&gt; &amp;amp;&amp;amp; Request.QueryString.Count&amp;gt;0){&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //some piece of code.&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-5490968340014292446?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CR_dhMWYhOjZE-iGlO01PE2_utQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CR_dhMWYhOjZE-iGlO01PE2_utQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CR_dhMWYhOjZE-iGlO01PE2_utQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CR_dhMWYhOjZE-iGlO01PE2_utQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/W5dqPJC4XSA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/5490968340014292446/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2011/03/check-querystring-for-null.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5490968340014292446?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5490968340014292446?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/W5dqPJC4XSA/check-querystring-for-null.html" title="Check QueryString for Null" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2011/03/check-querystring-for-null.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIDRXs9eip7ImA9Wx9SF0k.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-7643495846573835124</id><published>2010-12-03T12:35:00.000-08:00</published><updated>2010-12-07T09:56:14.562-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-07T09:56:14.562-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="delegates" /><category scheme="http://www.blogger.com/atom/ns#" term="refactoring" /><title>C# Delegates as Method Parameters</title><content type="html">Let's say you have 2 methods that go through similar steps:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;GetPrevItem&lt;span style="font-weight: bold;"&gt;()&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;&lt;b&gt;IsValidPrevEntry&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;())&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;item&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;=&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;b&gt;GetPrevString&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SetProperties&lt;span style="font-weight: bold;"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;item&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;null&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;GetNextItem&lt;span style="font-weight: bold;"&gt;()&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;&lt;b&gt;IsValidNextEntry&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;())&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;item&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;=&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;b&gt;GetNextString&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SetProperties&lt;span style="font-weight: bold;"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;item&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;null&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;These 2 methods essentially do the same thing. First, they check for some condition, and if the condition evaluates to true, they call another method, set some properties, and return a string. We can use &lt;b&gt;C#&lt;/b&gt; &lt;b&gt;delegates &lt;/b&gt;to refactor these 2 methods into one. Here is how you do it:&lt;br /&gt;
Declare 2 &lt;b&gt;delegates &lt;/b&gt;whose signature matches the methods we want to replace:&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;delegate&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;bool&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;IsValid&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;delegate&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;GetItem&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Create a method that will use the delegates: &lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;GetMyItem&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;IsValid&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;isValid&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;GetItem&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;getItem&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;isValid&lt;span style="font-weight: bold;"&gt;())&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;item&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;=&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;getItem&lt;span style="font-weight: bold;"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SetEventProperties&lt;span style="font-weight: bold;"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;item&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;null&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;An alternative method signature is as follows:&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;GetNavItem&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;bool&lt;/span&gt;&amp;gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;isValid&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Func&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;getItem&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;This way we don't have to declare delegates separately.&lt;br /&gt;
&lt;br /&gt;
Now, we can call the new method, passing the methods that we called before refactoring, as parameters:&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;strPrev&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;=&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GetMyItem&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;b&gt;IsValidPrevEntry&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;GetPrevString&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;strNext&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;=&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GetMyItem&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;b&gt;IsValidNextEntry&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;GetNextString&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;An interesting discussion of delegates can be found on the &lt;a href="http://stackoverflow.com/questions/2113779/can-someone-explain-this-c-lambda-syntax"&gt;stackflow&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-7643495846573835124?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aJl_u0yKZegkonQr1O4BpOx5ND8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aJl_u0yKZegkonQr1O4BpOx5ND8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aJl_u0yKZegkonQr1O4BpOx5ND8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aJl_u0yKZegkonQr1O4BpOx5ND8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/ZQoiNrJzjcI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/7643495846573835124/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/12/c-delegates-as-method-parameters.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/7643495846573835124?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/7643495846573835124?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/ZQoiNrJzjcI/c-delegates-as-method-parameters.html" title="C# Delegates as Method Parameters" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/12/c-delegates-as-method-parameters.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEESXo-fip7ImA9Wx9SF0k.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-3210463925577912042</id><published>2010-11-16T08:45:00.000-08:00</published><updated>2010-12-07T09:56:48.456-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-07T09:56:48.456-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><title>Add JavaScript Dynamically to ASP.NET UpdatePanel</title><content type="html">Use the following example:&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;System.Text.&lt;span style="color: #2b91af;"&gt;StringBuilder&lt;/span&gt; sb = &lt;span style="color: blue;"&gt;new&lt;/span&gt; System.Text.&lt;span style="color: #2b91af;"&gt;StringBuilder&lt;/span&gt;();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;sb.Append(&lt;span style="color: #a31515;"&gt;@" var inputs = document.getElementsByTagName('input');&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (var i = 0; i &amp;lt; inputs.length; i++) {&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (inputs[i].type == 'text') { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;inputs[i].onkeypress = function (event) {&lt;/span&gt;&lt;span style="color: #a31515;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event = event || window.event; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return myJavaScriptFunction(event);}&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }}"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; );&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;ScriptManager&lt;/span&gt;.&lt;a href="http://msdn.microsoft.com/en-us/library/bb350750.aspx"&gt;RegisterClientScriptBlock &lt;/a&gt;(&lt;span style="color: blue;"&gt;this&lt;/span&gt;, &lt;span style="color: blue;"&gt;this&lt;/span&gt;.GetType(), &lt;span style="color: #a31515;"&gt;"ajax"&lt;/span&gt;, sb.ToString(), &lt;span style="color: blue;"&gt;true&lt;/span&gt;);&amp;nbsp; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
What it does is attaches&amp;nbsp; a &lt;b&gt;JavaScript &lt;/b&gt;function (defined elsewhere) to each input box on the page on the key press event, and then registers it for use with a control that is inside an &lt;b&gt;UpdatePanel&lt;/b&gt;.&amp;nbsp; This could be used for user input validation. The code has been verified in IE and Firefox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-3210463925577912042?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KsmXvJoW7oekUGyPTAtm0DTh0rs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KsmXvJoW7oekUGyPTAtm0DTh0rs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KsmXvJoW7oekUGyPTAtm0DTh0rs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KsmXvJoW7oekUGyPTAtm0DTh0rs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/tv4BRYVA-vQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/3210463925577912042/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/11/add-javascript-dynamically-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/3210463925577912042?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/3210463925577912042?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/tv4BRYVA-vQ/add-javascript-dynamically-to.html" title="Add JavaScript Dynamically to ASP.NET UpdatePanel" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/11/add-javascript-dynamically-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYNRng7cCp7ImA9Wx9VFEU.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-5656374049706903755</id><published>2010-11-10T13:28:00.000-08:00</published><updated>2011-01-31T05:23:17.608-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-31T05:23:17.608-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GridView" /><title>ASP.NET GridView Subclass with Dynamic Footer Totals</title><content type="html">A frequent requirement when using an &lt;b&gt;ASP.NET GridView&lt;/b&gt; on a web page is to have a footer with totals for numeric columns in the GridView. Here is a &lt;b&gt;GridView&lt;/b&gt; subclass that calculates footer totals dynamically.&amp;nbsp; It requires 3 parameters:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;FirstComputedColumnIndex&lt;/b&gt; - the for index of the first column in the data set to be computed&lt;br /&gt;
&lt;b&gt;FirstVisbleComputedColumnIndex&lt;/b&gt; - for the index of the first computed column to be shown&lt;br /&gt;
&lt;b&gt;NumberOfComput&lt;/b&gt;&lt;b&gt;edColumns&lt;/b&gt; - for the number of computed columns.&lt;br /&gt;
&lt;br /&gt;
Here is the class code:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; Eric.TotalGrid {&lt;/div&gt;&lt;/div&gt;&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;partial&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;GridView&lt;/span&gt; : System.Web.UI.WebControls.&lt;span style="color: #2b91af;"&gt;GridView&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; Indexer footerTotals;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; FirstComputedColumnIndex { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; FirstVisbleComputedColumnIndex { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; NumberOfComputedColumns { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnLoad(&lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ShowFooter = &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;base&lt;/span&gt;.OnLoad(e);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnInit(&lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; footerTotals = &lt;span style="color: blue;"&gt;new&lt;/span&gt; Indexer(NumberOfComputedColumns);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;base&lt;/span&gt;.OnInit(e);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; InitializeComponent()&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.RowDataBound += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;GridViewRowEventHandler&lt;/span&gt;(&lt;span style="color: blue;"&gt;this&lt;/span&gt;.GridView1_RowDataBound);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; GridView1_RowDataBound(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;GridViewRowEventArgs&lt;/span&gt; e)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;DataRowView&lt;/span&gt; tableData = e.Row.DataItem &lt;span style="color: blue;"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DataRowView&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (e.Row.RowType == &lt;span style="color: #2b91af;"&gt;DataControlRowType&lt;/span&gt;.DataRow)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = FirstComputedColumnIndex; i &amp;lt; (FirstComputedColumnIndex + NumberOfComputedColumns); i++)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (tableData[i] != &lt;span style="color: #2b91af;"&gt;DBNull&lt;/span&gt;.Value)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;decimal&lt;/span&gt; result = 0;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;Decimal&lt;/span&gt;.TryParse(tableData[i].ToString(), &lt;span style="color: blue;"&gt;out&lt;/span&gt; result))&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; footerTotals[i - FirstComputedColumnIndex] += result;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;else&lt;/span&gt; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (e.Row.RowType == &lt;span style="color: #2b91af;"&gt;DataControlRowType&lt;/span&gt;.Footer)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; NumberOfComputedColumns; i++)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (e.Row.Cells.Count &amp;gt; (i + FirstVisbleComputedColumnIndex))&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.Row.Cells[i + FirstVisbleComputedColumnIndex].Text = footerTotals[i].ToString();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
The key to this GridView is using an &lt;a href="http://msdn.microsoft.com/en-us/library/2549tw02%28v=VS.100%29.aspx"&gt;Indexer &lt;/a&gt;class that can be accessed like an array. Here is its listing:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Indexer&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; _upperLimit;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;decimal&lt;/span&gt;[] myArray;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; Indexer(&lt;span style="color: blue;"&gt;int&lt;/span&gt; limit)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _upperLimit = limit;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; myArray = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: blue;"&gt;decimal&lt;/span&gt;[_upperLimit];&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;decimal&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;[&lt;span style="color: blue;"&gt;int&lt;/span&gt; index]&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Indexer declaration&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Check the index limits.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (index &amp;lt; 0 || index &amp;gt;= _upperLimit)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; 0;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; myArray[index];&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (!(index &amp;lt; 0 || index &amp;gt;= _upperLimit))&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; myArray[index] = &lt;span style="color: blue;"&gt;value&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;The &lt;b&gt;Indexer &lt;/b&gt;class can be nested within the &lt;b&gt;GridView &lt;/b&gt;subclass.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The last example shows how to use the custom &lt;b&gt;GridView &lt;/b&gt;on a ASP.NET web page:&lt;br /&gt;
First,&amp;nbsp; use the register tag:&lt;br /&gt;
&lt;b&gt;&amp;lt;%@ Register Namespace="Eric.TotalGrid" TagPrefix="x" Assembly="TotalGrid" %&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Then, use it just like any other &lt;b&gt;GridView&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;lt;x:GridView runat="server" ....&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;FirstComputedColumnIndex="4" FirstVisbleComputedColumnIndex="3" NumberOfComputedColumns="10"&amp;nbsp; &amp;gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-5656374049706903755?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XaKGzwSSLLIDEjfBII3Qo9Xvd3I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XaKGzwSSLLIDEjfBII3Qo9Xvd3I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XaKGzwSSLLIDEjfBII3Qo9Xvd3I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XaKGzwSSLLIDEjfBII3Qo9Xvd3I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/IAtNkTo93ek" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/5656374049706903755/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/11/gridview-class-with-dynamic-totals.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5656374049706903755?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5656374049706903755?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/IAtNkTo93ek/gridview-class-with-dynamic-totals.html" title="ASP.NET GridView Subclass with Dynamic Footer Totals" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/11/gridview-class-with-dynamic-totals.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcBSHg_eCp7ImA9Wx9SFko.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-1424672105655610801</id><published>2010-10-28T08:12:00.000-07:00</published><updated>2010-12-06T13:14:19.640-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-06T13:14:19.640-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DataTable" /><category scheme="http://www.blogger.com/atom/ns#" term="GridView" /><title>Set DataRow Values and Other ASP.NET GridView Tips</title><content type="html">You can set &lt;b&gt;DataRow &lt;/b&gt;values in two ways:&lt;br /&gt;
First, using a column name:&lt;br /&gt;
&lt;i&gt;myDataRow["City"]= "London";&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Or, using an index:&lt;br /&gt;
&lt;i&gt;myDataRow[2] = "London";&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Don't use &lt;i&gt;ItemArray &lt;/i&gt;property to set values, it won't work.&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style="color: blue;"&gt;Set Text Box Width in a GridView Bound Field:&lt;/h4&gt;Use &lt;b&gt;ControlStyle &lt;/b&gt;properties:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;asp:BoundField... ControlStyle-Width="60px"/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: blue;"&gt;&lt;b&gt;Change GridViewRow Appearance:&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
There are different ways to change &lt;b&gt;GridViewRow &lt;/b&gt;appearance. The &lt;a href="http://blog.devexperience.net/en/5/Change_background_color_of_GridView%27s_Rows.aspx"&gt;approach &lt;/a&gt;I like involves using the GridViewRow &lt;b&gt;Style &lt;/b&gt;property. On &lt;b&gt;RowDataBound &lt;/b&gt;event use this:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; (e.Row.RowType == &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;DataControlRowType&lt;/span&gt;.Footer)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; e.Row.Style.Add(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"color"&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;&lt;span style="color: #a31515;"&gt;"#999999"&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; e.Row.Style.Add(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"font-weight"&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;&lt;span style="color: #a31515;"&gt;"bold"&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; ... &lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
Did you know that you could pass&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;b style="color: blue;"&gt;data format string &lt;/b&gt;as a parameter to the ToString() method?&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;e.Row.Cells[1].Text = iTotal.ToString(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"F2"&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;The above format string &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.dataformatstring.aspx"&gt;specifies &lt;/a&gt;2 decimal places in a numeric value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-1424672105655610801?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3gC6LFHpJ3xLKSmOdUZbV-s1VR8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3gC6LFHpJ3xLKSmOdUZbV-s1VR8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3gC6LFHpJ3xLKSmOdUZbV-s1VR8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3gC6LFHpJ3xLKSmOdUZbV-s1VR8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/9pNnzvxJuRE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/1424672105655610801/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/10/set-datarow-values.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/1424672105655610801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/1424672105655610801?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/9pNnzvxJuRE/set-datarow-values.html" title="Set DataRow Values and Other ASP.NET GridView Tips" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/10/set-datarow-values.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkACQns-eyp7ImA9Wx9SF0k.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-8405762202992477336</id><published>2010-10-26T09:30:00.000-07:00</published><updated>2010-12-07T09:59:23.553-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-07T09:59:23.553-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lambda" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Simple Linq to Object example without Casting</title><content type="html">I found this discussion related to casting the result of a &lt;b&gt;LINQ &lt;/b&gt;query to a static object at &lt;a href="http://devlicio.us/blogs/derik_whittaker/archive/2008/02/22/simple-linq-to-object-example-with-casting.aspx"&gt;http://devlicio.us/blogs/derik_whittaker/archive/2008/02/22/simple-linq-to-object-example-with-casting.aspx.&lt;/a&gt; Since it was not possible to post a comment I decided to write a blog entry on my blog.&lt;br /&gt;
&lt;br /&gt;
The example given at the above page gives the following code:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;br /&gt;
&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt; &amp;gt;&lt;span style="color: #2b91af;"&gt; &lt;/span&gt;sports = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt; &amp;lt;&lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt;&amp;gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;sports.Add(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt; { SportID = 1, Name = &lt;span style="color: #a31515;"&gt;"Sport 1"&lt;/span&gt;, Description = &lt;span style="color: #a31515;"&gt;"Sport Desc 1"&lt;/span&gt; });&lt;/div&gt;&lt;div style="margin: 0px;"&gt;sports.Add(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt; { SportID = 2, Name = &lt;span style="color: #a31515;"&gt;"Sport 2"&lt;/span&gt;, Description = &lt;span style="color: #a31515;"&gt;"Sport Desc 2"&lt;/span&gt; });&lt;/div&gt;&lt;div style="margin: 0px;"&gt;sports.Add(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt; { SportID = 3, Name = &lt;span style="color: #a31515;"&gt;"Sport 3"&lt;/span&gt;, Description = &lt;span style="color: #a31515;"&gt;"Sport Desc 3"&lt;/span&gt; });&lt;/div&gt;&lt;div style="margin: 0px;"&gt;sports.Add(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt; { SportID = 4, Name = &lt;span style="color: #a31515;"&gt;"Sport 4"&lt;/span&gt;, Description = &lt;span style="color: #a31515;"&gt;"Sport Desc 4"&lt;/span&gt; });&lt;/div&gt;&lt;div style="margin: 0px;"&gt;sports.Add(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt; { SportID = 5, Name = &lt;span style="color: #a31515;"&gt;"Sport 5"&lt;/span&gt;, Description = &lt;span style="color: #a31515;"&gt;"Sport Desc 5"&lt;/span&gt; });&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; query = &lt;span style="color: blue;"&gt;from&lt;/span&gt; s &lt;span style="color: blue;"&gt;in&lt;/span&gt; sports&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/span&gt; s.Name == &lt;span style="color: #a31515;"&gt;"Sport 2"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;select&lt;/span&gt; s;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt; sport = (&lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt;)query.First();&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
I would like to note that you could rewrite the above statements using  lambdas:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;Sport&lt;/span&gt; sport = sports.Where(s =&amp;gt; s.Name == &lt;span style="color: #a31515;"&gt;"Sport 2"&lt;/span&gt;).First();&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
No "casting" is required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-8405762202992477336?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xxL0Dt3s1kGnKz64cn2YEh9vY2M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xxL0Dt3s1kGnKz64cn2YEh9vY2M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xxL0Dt3s1kGnKz64cn2YEh9vY2M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xxL0Dt3s1kGnKz64cn2YEh9vY2M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/-oQdCSjTZWg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/8405762202992477336/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/10/simple-linq-to-object-example-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/8405762202992477336?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/8405762202992477336?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/-oQdCSjTZWg/simple-linq-to-object-example-with.html" title="Simple Linq to Object example without Casting" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/10/simple-linq-to-object-example-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8FQnc7eCp7ImA9Wx9SF0k.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-2496567023082188757</id><published>2010-08-03T08:06:00.000-07:00</published><updated>2010-12-07T10:00:13.900-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-07T10:00:13.900-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="winform" /><title>Resize WinForm Controls Automatically</title><content type="html">Let' say you have a form with a &lt;b&gt;ListBox &lt;/b&gt;and OK and Cancel buttons.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_z3bqutNd8ec/TFgzl_skj6I/AAAAAAAAAhA/1BvElo7CvmU/s1600/form_before.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_z3bqutNd8ec/TFgzl_skj6I/AAAAAAAAAhA/1BvElo7CvmU/s320/form_before.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a class="cssButton" href="javascript:void(0)" id="previewButton" onclick="void(0);" target=""&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You want controls to be resized automatically when a form is resized. This is how you can achieve this by using the &lt;b&gt;Anchor&lt;/b&gt; property:&lt;br /&gt;
&lt;br /&gt;
Place all controls inside a &lt;b&gt;GroupBox&lt;/b&gt;. Set the &lt;b&gt;Anchor &lt;/b&gt;and &lt;b&gt;Dock &lt;/b&gt;properties&lt;br /&gt;
&lt;br /&gt;
GroupBox properties:&lt;br /&gt;
&lt;b&gt;Anchor&lt;/b&gt; : Top, Bottom, Left, Right&lt;br /&gt;
&lt;b&gt;Dock&lt;/b&gt; : None&lt;br /&gt;
&lt;br /&gt;
Buttons properties:&lt;br /&gt;
&lt;b&gt;Anchor&lt;/b&gt; : Bottom, Right&lt;br /&gt;
&lt;b&gt;Dock &lt;/b&gt;: None&lt;br /&gt;
&lt;br /&gt;
ListBox properties:&lt;br /&gt;
&lt;b&gt;Anchor&lt;/b&gt; : Top, Bottom, Left, Right&lt;br /&gt;
&lt;b&gt;Dock &lt;/b&gt;: None&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-2496567023082188757?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kmax4hZdyV5JaSgq22fc5HgVH1A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kmax4hZdyV5JaSgq22fc5HgVH1A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kmax4hZdyV5JaSgq22fc5HgVH1A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kmax4hZdyV5JaSgq22fc5HgVH1A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/2lsuoX3Lku4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/2496567023082188757/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/08/resize-controls-automatically.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/2496567023082188757?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/2496567023082188757?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/2lsuoX3Lku4/resize-controls-automatically.html" title="Resize WinForm Controls Automatically" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_z3bqutNd8ec/TFgzl_skj6I/AAAAAAAAAhA/1BvElo7CvmU/s72-c/form_before.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/08/resize-controls-automatically.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04MRX8zfCp7ImA9Wx5TGEk.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-4615619726139560931</id><published>2010-08-03T07:33:00.000-07:00</published><updated>2010-08-03T07:33:04.184-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-03T07:33:04.184-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="winform" /><category scheme="http://www.blogger.com/atom/ns#" term="Registry" /><title>Save Window Position in Registry</title><content type="html">This is how you could save a Window position in the Registry so that the Window position could be restored next time the Form loads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Declare the following constant strings:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;public&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; REGKEY = @"SOFTWARE\MyCompany\MyApp\";&amp;nbsp; &lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; WINWIDTH = &lt;span style="color: #a31515;"&gt;"windowWidth"&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; WINHEIGHT = &lt;span style="color: #a31515;"&gt;"windowHeight"&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
Then, create a key for your application in the Registry.&amp;nbsp; &lt;br /&gt;
Declare a RegistryKey variable:&lt;br /&gt;
private &lt;span style="color: #2b91af;"&gt;RegistryKey&lt;/span&gt; key;&lt;br /&gt;
&lt;br /&gt;
Use the following method to obtain the key: &lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RegistryKey&lt;/span&gt; GetKey(&lt;span style="color: blue;"&gt;string&lt;/span&gt; RegKey)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;RegistryKey&lt;/span&gt; Key = &lt;span style="color: #2b91af;"&gt;Registry&lt;/span&gt;.CurrentUser.OpenSubKey(RegKey, &lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (Key == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Key = &lt;span style="color: #2b91af;"&gt;Registry&lt;/span&gt;.CurrentUser.CreateSubKey(RegKey);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; Key;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
key =&amp;nbsp; GetKey(REGKEY);&lt;br /&gt;
&lt;br /&gt;
Get window width and height:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt; width = Form1.Size.Width;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt; height = Form1.Size.Height;&lt;/div&gt;&lt;/div&gt;Save window width and height in the registry and close the RegistryKey.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;key.SetValue(&lt;span style="color: #2b91af;"&gt;&lt;/span&gt;WINWIDTH, width);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;key.SetValue(&lt;span style="color: #2b91af;"&gt;&lt;/span&gt;WINHEIGHT, height);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;key.Close();&amp;nbsp;&lt;/div&gt;&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;When you load your form, read the values from the registry:&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;width = Convert&lt;/span&gt;.ToInt16 (key.GetValue(WINWIDTH));&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;height = Convert&lt;/span&gt;.ToInt16 (key.GetValue(WINHEIGHT));&lt;/div&gt;&lt;br /&gt;
Set the new window size:&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;Form1.Size = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Size&lt;/span&gt;(width, height);&lt;/div&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-4615619726139560931?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aYwD553iBof0OXkHkLTPhfU7fRU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aYwD553iBof0OXkHkLTPhfU7fRU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aYwD553iBof0OXkHkLTPhfU7fRU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aYwD553iBof0OXkHkLTPhfU7fRU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/YqF7IBiji6o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/4615619726139560931/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/08/save-window-position-in-registry.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/4615619726139560931?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/4615619726139560931?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/YqF7IBiji6o/save-window-position-in-registry.html" title="Save Window Position in Registry" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/08/save-window-position-in-registry.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4HSHo8cCp7ImA9WxFaFkg.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-5329060971553014685</id><published>2010-07-20T13:31:00.000-07:00</published><updated>2010-07-20T13:32:19.478-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-20T13:32:19.478-07:00</app:edited><title>Concise Code to Enable/Disable WinForm Controls</title><content type="html">Let's say you have a check box (cb1)&amp;nbsp; on a form that enables a text box (txt1)&amp;nbsp; and disables a listbox (lst1).&amp;nbsp; You can write a statement that shows this dependency on 2 lines:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: blue;"&gt;txt1.Enabled = cb1.Checked;&lt;/span&gt;&lt;br /&gt;
&lt;div style="color: blue;"&gt;&amp;nbsp; lst1.Enabled = !cb1.Checked;&lt;/div&gt;&lt;br /&gt;
This works fine. However, we repeat the reference to the check box state twice.&lt;br /&gt;
There is a way to write the above statements on the same line:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;lst1.Enabled = !(txt1.Enabled = cb1.Checked);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Looks simple when you get it right. But it took me a few minutes to figure it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-5329060971553014685?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LeazMgkI0_YhyeUA-p6t2hZYeWQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LeazMgkI0_YhyeUA-p6t2hZYeWQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LeazMgkI0_YhyeUA-p6t2hZYeWQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LeazMgkI0_YhyeUA-p6t2hZYeWQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/_o_m355gItA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/5329060971553014685/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/07/concise-code-to-enabledisable-winform.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5329060971553014685?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5329060971553014685?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/_o_m355gItA/concise-code-to-enabledisable-winform.html" title="Concise Code to Enable/Disable WinForm Controls" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/07/concise-code-to-enabledisable-winform.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8MRH84eSp7ImA9Wx9SF0k.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-6029175627267415852</id><published>2010-07-16T13:30:00.000-07:00</published><updated>2010-12-07T10:01:25.131-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-07T10:01:25.131-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dynamic Data" /><title>Examine Columns in ASP.NET Dynamic Data MetaTable</title><content type="html">This is how you get access to all columns in a &lt;b&gt;MetaTable &lt;/b&gt;that serves as a data source to your controls like a &lt;b&gt;DetailsView &lt;/b&gt;or a &lt;b&gt;GridView&lt;/b&gt;. &lt;b&gt;Dynamic Data&lt;/b&gt; generates the following code for each &lt;b&gt;ASP.NET&lt;/b&gt; page by default:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MetaTable&lt;/span&gt; table;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; table = DetailsDataSource.GetTable();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Title = table.DisplayName; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;/div&gt;The &lt;b&gt;MetaTable &lt;/b&gt;class has a &lt;b&gt;Columns &lt;/b&gt;property that returns a collection of &lt;b&gt;MetaColumns &lt;/b&gt;for the table. This allows us to enumerate through the collection and check for any custom attributes on table columns:&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; foreach&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;MetaColumn&lt;/span&gt; column &lt;span style="color: blue;"&gt;in&lt;/span&gt; table.Columns) &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/span&gt; (column.Attributes.OfType&amp;lt;&lt;span style="color: #2b91af;"&gt;MyCustomAttribute&lt;/span&gt;&amp;gt;().Count() &amp;gt; 0)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ......&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp; } &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
This is based on a tip found at &lt;a href="http://weblogs.asp.net/andrewrea/archive/2009/03/25/asp-net-dynamic-data-using-column-generators-based-on-meta-data.aspx"&gt;this &lt;/a&gt;blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-6029175627267415852?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6g1U6PgnuI12VBP_vPYTqcb65t0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6g1U6PgnuI12VBP_vPYTqcb65t0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6g1U6PgnuI12VBP_vPYTqcb65t0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6g1U6PgnuI12VBP_vPYTqcb65t0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/TfElWE2QTXg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/6029175627267415852/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/07/examine-columns-in-metatable.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/6029175627267415852?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/6029175627267415852?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/TfElWE2QTXg/examine-columns-in-metatable.html" title="Examine Columns in ASP.NET Dynamic Data MetaTable" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/07/examine-columns-in-metatable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIHQnY5cSp7ImA9Wx9SFks.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-3179881680343172469</id><published>2010-07-08T10:39:00.000-07:00</published><updated>2010-12-06T11:08:53.829-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-06T11:08:53.829-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Collections" /><title>Reverse .NET SortedList</title><content type="html">&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;This post shows how you could reverse a &lt;b&gt;SortedList &lt;/b&gt;in C# by its keys:&lt;/div&gt;&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;SortedList&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; strlist = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SortedList&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;strlist.Add(&lt;span style="color: #a31515;"&gt;"f3"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"xxx"&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;strlist.Add(&lt;span style="color: #a31515;"&gt;"f1"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"ccc"&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;strlist.Add(&lt;span style="color: #a31515;"&gt;"f2"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"aaa"&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; kvp &lt;span style="color: blue;"&gt;in&lt;/span&gt; strlist)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Key = {0}, Value = {1}"&lt;/span&gt;, kvp.Key, kvp.Value);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"reverse the list"&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;&amp;gt; revList = strlist.Reverse();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; kvp &lt;span style="color: blue;"&gt;in&lt;/span&gt; revList)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Key = {0}, Value = {1}"&lt;/span&gt;, kvp.Key, kvp.Value);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-3179881680343172469?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SUFyv_BbKuGQHsL91tKwxn1uFxw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SUFyv_BbKuGQHsL91tKwxn1uFxw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SUFyv_BbKuGQHsL91tKwxn1uFxw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SUFyv_BbKuGQHsL91tKwxn1uFxw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/gbFP9MY9X14" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/3179881680343172469/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/07/reverse-sortedlist.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/3179881680343172469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/3179881680343172469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/gbFP9MY9X14/reverse-sortedlist.html" title="Reverse .NET SortedList" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/07/reverse-sortedlist.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcMQn85fSp7ImA9WxFWGU4.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-3016556553510160200</id><published>2010-06-07T12:14:00.000-07:00</published><updated>2010-06-07T12:14:43.125-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-07T12:14:43.125-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="File" /><title>Open a Text File If It  Is Used by Another Process</title><content type="html">Use the &lt;b&gt;FileStream &lt;/b&gt;class's Open method to open a file with &lt;b&gt;FileShare.ReadWrite&lt;/b&gt; as a parameter. Then use &lt;b&gt;StreamReader &lt;/b&gt;class supplying the &lt;b&gt;FileStream &lt;/b&gt;object as a constructor argument:&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;FileStream&lt;/span&gt; fs = &lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Open(filename, &lt;span style="color: #2b91af;"&gt;FileMode&lt;/span&gt;.Open, &lt;span style="color: #2b91af;"&gt;FileAccess&lt;/span&gt;.Read, &lt;span style="color: #2b91af;"&gt;FileShare&lt;/span&gt;.ReadWrite);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;StreamReader&lt;/span&gt; sr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;StreamReader&lt;/span&gt;(fs);&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-3016556553510160200?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gd-8ne50-n8ksoQDm4ZlasffUyc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gd-8ne50-n8ksoQDm4ZlasffUyc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gd-8ne50-n8ksoQDm4ZlasffUyc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gd-8ne50-n8ksoQDm4ZlasffUyc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/HCa6spcUae8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/3016556553510160200/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/06/open-text-file-if-it-is-used-by-another.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/3016556553510160200?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/3016556553510160200?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/HCa6spcUae8/open-text-file-if-it-is-used-by-another.html" title="Open a Text File If It  Is Used by Another Process" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/06/open-text-file-if-it-is-used-by-another.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4HRXY4eyp7ImA9WhdSEkg.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-5370368969285593374</id><published>2010-06-03T06:48:00.000-07:00</published><updated>2011-07-21T06:28:54.833-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-21T06:28:54.833-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Reflection" /><title>Set Instance Property Value through Reflection</title><content type="html">This is how you can set object property value using reflection:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;Employee emp = new Employee();&lt;br /&gt;
&lt;span style="color: #2b91af;"&gt;PropertyInfo&lt;/span&gt; pi = emp.GetType().GetProperty(&lt;span style="color: #a31515;"&gt;"myPropertyName"&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;pi.SetValue(emp, &lt;span style="color: #a31515;"&gt;"myValue"&lt;/span&gt;, &lt;span style="color: blue;"&gt;null&lt;/span&gt;);&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
This is how you read a value:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt; value = pi.GetValue(emp, &lt;span style="color: blue;"&gt;null&lt;/span&gt;);&lt;/div&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
To access all properties of an object:&lt;/div&gt;&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;br /&gt;
foreach (PropertyInfo info in emp.GetType().GetProperties()){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;/div&gt;Using reflection you can automatically populate a transfer object from a database record if the object property &lt;strong&gt;names&lt;/strong&gt; and &lt;strong&gt;types&lt;/strong&gt; are the same as the record names and types.&lt;br /&gt;
&lt;br /&gt;
An example using a DataReader:&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
List &amp;lt;employee&amp;gt;list = new List &amp;lt;employee&amp;gt;(); &lt;br /&gt;
while (dataReader.Read())&lt;br /&gt;
{&lt;br /&gt;
Employee emp = new Employee();&lt;br /&gt;
foreach (&lt;span style="color: #2b91af;"&gt;PropertyInfo&lt;/span&gt; info in emp.GetType().GetProperties())&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;if (!DBNull.Value.Equals(dr[info.Name]))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.SetValue(emp, dr[info.Name], &lt;span style="color: blue;"&gt;null&lt;/span&gt;); &lt;br /&gt;
} &lt;br /&gt;
list.Add(emp);&lt;br /&gt;
} &lt;br /&gt;
&amp;nbsp; &lt;/div&gt;&lt;/div&gt;The resulting &lt;em&gt;list&lt;/em&gt; will hold Employee records. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-5370368969285593374?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WwO8rSFg1XuvNP0BNXF8v9YjVHo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WwO8rSFg1XuvNP0BNXF8v9YjVHo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WwO8rSFg1XuvNP0BNXF8v9YjVHo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WwO8rSFg1XuvNP0BNXF8v9YjVHo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/Z5dibJB0uwQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/5370368969285593374/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/06/set-instance-proprerty-value-through.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5370368969285593374?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5370368969285593374?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/Z5dibJB0uwQ/set-instance-proprerty-value-through.html" title="Set Instance Property Value through Reflection" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/06/set-instance-proprerty-value-through.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYGRXY_fCp7ImA9WxFWFEU.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-7157294420364549481</id><published>2010-06-02T05:52:00.000-07:00</published><updated>2010-06-02T05:52:04.844-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-02T05:52:04.844-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TFS" /><title>Object Class Names of  the The Authorization Service</title><content type="html">The &lt;a href="http://msdn.microsoft.com/en-us/library/bb169208%28v=VS.80%29.aspx"&gt;IAuthorizationService &lt;/a&gt;interface exposes two methods you can use to obtain object class names available in TFS.&lt;br /&gt;
&lt;br /&gt;
The first one is &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.iauthorizationservice.listobjectclasses%28v=VS.80%29.aspx"&gt;ListObjectClasses&lt;/a&gt;. It returns a string array of IDs of all defined object classes :&lt;br /&gt;
&lt;br /&gt;
CSS_NODE&lt;br /&gt;
EVENT_SUBSCRIPTION&lt;br /&gt;
ITERATION_NODE&lt;br /&gt;
NAMESPACE&lt;br /&gt;
PROJECT&lt;br /&gt;
&lt;br /&gt;
The other one is &lt;a href="http://msdn.microsoft.com/en-US/library/microsoft.teamfoundation.server.iauthorizationservice.listobjectclassactions%28v=VS.80%29.aspx"&gt;ListObjectClassActions&lt;/a&gt;. You need to supply an object class id as a string parameter to the method. It will return a string array of actions defined for a specified class. For example, if you supply CSS_NODE as a parameter, it will return the following action ids:&lt;br /&gt;
&lt;br /&gt;
GENERIC_READ&lt;br /&gt;
GENERIC_WRITE&lt;br /&gt;
CREATE_CHILDREN&lt;br /&gt;
DELETE&lt;br /&gt;
WORK_ITEM_READ&lt;br /&gt;
WORK_ITEM_WRITE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-7157294420364549481?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E6IIWsOIZiQCsc6YmN1p1_6E6Bg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E6IIWsOIZiQCsc6YmN1p1_6E6Bg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E6IIWsOIZiQCsc6YmN1p1_6E6Bg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E6IIWsOIZiQCsc6YmN1p1_6E6Bg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/Bejz4Zcymao" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/7157294420364549481/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/06/object-class-names-of-the-authorization.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/7157294420364549481?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/7157294420364549481?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/Bejz4Zcymao/object-class-names-of-the-authorization.html" title="Object Class Names of  the The Authorization Service" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/06/object-class-names-of-the-authorization.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CSXs6eyp7ImA9WxFWFEw.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-6647076834540973968</id><published>2010-06-01T08:46:00.000-07:00</published><updated>2010-06-01T12:19:28.513-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-01T12:19:28.513-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lambda" /><category scheme="http://www.blogger.com/atom/ns#" term="File" /><title>Query Operator First</title><content type="html">Let's say you have the following method that returns a &lt;span style="color: #2b91af;"&gt;FileInfo&lt;/span&gt; object from an array if the Name property equals a certain value:&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;FileInfo&lt;/span&gt; FindFile(&lt;span style="color: #2b91af;"&gt;FileInfo&lt;/span&gt;[] fileInfoArray, &lt;span style="color: blue;"&gt;string&lt;/span&gt; name)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;FileInfo&lt;/span&gt; fi &lt;span style="color: blue;"&gt;in&lt;/span&gt; fileInfoArray)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (fi.Name == name)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; fi;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;You can replace this method with a call to the query operator &lt;b&gt;First &lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 10pt; padding: 8px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;FileInfo&lt;/span&gt; fileInfo = fileInfoArray.First(fi =&amp;gt; fi.Name ==&lt;span style="color: #a31515;"&gt;"myFileName.txt"&lt;/span&gt;); &lt;/div&gt;&lt;/div&gt;Since the query operator &lt;b&gt;First &lt;/b&gt;returns a single value, it forces immediate query evaluation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-6647076834540973968?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UTRao71vltxVX5RU0uc9G871MJ4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UTRao71vltxVX5RU0uc9G871MJ4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UTRao71vltxVX5RU0uc9G871MJ4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UTRao71vltxVX5RU0uc9G871MJ4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/ukV75Eoh414" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/6647076834540973968/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/06/extension-method-first.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/6647076834540973968?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/6647076834540973968?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/ukV75Eoh414/extension-method-first.html" title="Query Operator First" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/06/extension-method-first.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4CRnc9fip7ImA9WhRQEUU.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-346493526584432182</id><published>2010-05-27T08:25:00.000-07:00</published><updated>2011-12-06T07:22:47.966-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-06T07:22:47.966-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lambda" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Replace foreach with Extension Methods and Lambda Expressions</title><content type="html">I suppose many of us use the &lt;b style="color: blue;"&gt;foreach &lt;/b&gt;statement very often in our code. I'll show you how to replace simple &lt;b&gt;&lt;span style="color: blue;"&gt;foreach &lt;/span&gt;&lt;/b&gt;statements with new &lt;a href="http://msdn.microsoft.com/en-us/library/bb397687.aspx"&gt;lambda expressions&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Suppose you want to create a List &amp;lt; string&amp;gt; of names of files residing in a directory. This is how you could do it.&lt;br /&gt;
&lt;br /&gt;
Set up an array of FileInfo objects:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;string&lt;/span&gt; filePath = &lt;span style="color: #a31515;"&gt;@"C:\Temp"&lt;/span&gt;;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: #2b91af;"&gt;DirectoryInfo&lt;/span&gt; dInfo = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DirectoryInfo&lt;/span&gt;(filePath); &lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: #2b91af;"&gt;FileInfo&lt;/span&gt;[] fileInfoArray = dInfo.GetFiles();&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Create a string type List:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; fileList = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;();&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;FileInfo&lt;/span&gt; fi &lt;span style="color: blue;"&gt;in&lt;/span&gt; fileInfoArray)&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
{&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fileList.Add(fi.Name);&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
}&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
Select&lt;/h3&gt;
Using lambda expressions and the &lt;a href="http://msdn.microsoft.com/en-us/library/bb548891%28v=VS.100%29.aspx"&gt;Select &lt;/a&gt;extension method it is possible to re-write the last 3 lines as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;var&lt;/span&gt; files = fileInfoArray.&lt;b&gt;Select&lt;/b&gt;(fi =&amp;gt; fi.Name);&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
That's one line instead of 3. But we still want a List &amp;lt;string&amp;gt; object to be used later in the code. We need to use the &lt;a href="http://msdn.microsoft.com/en-us/library/bb342261%28v=VS.100%29.aspx"&gt;Enumerable.ToList &amp;lt;TSource&amp;gt; method &lt;/a&gt;to cast to a List. This is how we do it:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; fileList2 = fileInfoArray.Select(fi =&amp;gt; fi.Name).ToList ();&amp;nbsp; &lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
This way you use one line of code instead of 4.&lt;br /&gt;
&lt;h3&gt;
Where&lt;/h3&gt;
Now, what if we add only those file names to the List that meet certain criteria, e.g:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;FileInfo&lt;/span&gt; fi &lt;span style="color: blue;"&gt;in&lt;/span&gt; fileInfoArray)&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
{&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (fi.Length &amp;gt; 10000000)&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; largeFiles.Add(fi.Name);&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
}&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Which equivalent extension method can we use to achieve the same result? We need to use the &lt;a href="http://msdn.microsoft.com/en-us/library/bb534803%28v=VS.100%29.aspx"&gt;Where&lt;/a&gt; extension method of the IEnumerable &amp;lt;T&amp;gt; interface first, and then append the earlier Select method to the statement:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;var&lt;/span&gt; varLargeFiles =&amp;nbsp; fileInfoArray.&lt;b&gt;Where &lt;/b&gt;(fi =&amp;gt; fi.Length &amp;gt; 1000000).Select(fi=&amp;gt;fi.Name);&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
LINQ&lt;/h3&gt;
Now, to complete the example, I'll show the way to obtain a similar list using the &lt;a href="http://msdn.microsoft.com/library/bb308959.aspx"&gt;&lt;b&gt;LINQ&lt;/b&gt;&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;var&lt;/span&gt; q = &lt;span style="color: blue;"&gt;from&lt;/span&gt; fi &lt;span style="color: blue;"&gt;in&lt;/span&gt; fileInfoArray&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;where&lt;/span&gt; fi.Length &amp;gt; 1000000&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;select&lt;/span&gt; fi.Name;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; largeFiles2 = q.ToList();&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Query operator &lt;b&gt;ToList &lt;/b&gt;forces immediate query evaluation.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Boolean Methods &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
What if you have a method that loops through an array and returns a &lt;b&gt;bool &lt;/b&gt;type depending on some condition inside the loop. Can we use query operators instead? It is slightly more difficult but still possible.&lt;br /&gt;
&lt;br /&gt;
Suppose you have the following methods that compares each character in a string array to each character in another string array and returns false when a character in the second array is not found in the first array:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;bool&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;IsAnagram&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;word&lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;input&lt;span style="font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;char&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;[] &lt;/span&gt;inputArray&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;=&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;input.ToCharArray&lt;span style="font-weight: bold;"&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;foreach&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;&lt;span style="color: blue;"&gt;char&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;ch&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;in&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;word.ToCharArray&lt;span style="font-weight: bold;"&gt;())&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;!inputArray.Contains&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;ch&lt;span style="font-weight: bold;"&gt;))&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;false&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;true&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
To emulate similar statements, first we need to find the first non-matching character:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;char&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;c&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;=&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &lt;/span&gt;word.ToCharArray&lt;span style="font-weight: bold;"&gt;()&lt;/span&gt;.FirstOrDefault&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;x&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;=&amp;gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;!inputArray.Contains&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;x&lt;span style="font-weight: bold;"&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&amp;nbsp;We use the &lt;i&gt;&lt;b&gt;FirstOrDefault&amp;nbsp; &lt;/b&gt;&lt;/i&gt;operator instead of &lt;b&gt;&lt;i&gt;First &lt;/i&gt;&lt;/b&gt;because otherwise we may have "Sequence contains no matching element" error if the expression does not returns any characters. &lt;br /&gt;
&lt;br /&gt;
Now we can return a &lt;b&gt;bool &lt;/b&gt;value depending on the result of the previous statement:&lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;c&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;!=&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;0&lt;span style="font-weight: bold;"&gt;) &lt;/span&gt;?&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;false&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span style="color: blue;"&gt;true&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
For sheer fun you can rewrite those two statements as follows:&amp;nbsp; &lt;br /&gt;
&lt;div style="background: white; color: black; font-family: Consolas; font-size: 11pt; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; (&lt;/span&gt;word.ToCharArray&lt;span style="font-weight: bold;"&gt;()&lt;/span&gt;.FirstOrDefault&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;x&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;=&amp;gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;!inputArray.Contains&lt;span style="font-weight: bold;"&gt;(&lt;/span&gt;x&lt;span style="font-weight: bold;"&gt;))) &lt;/span&gt;==&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;0&lt;span style="font-weight: bold;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: large;"&gt;Sorting&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
This does not really belong in this post, however, here is a quick way to sort a list of objects. Your object could be similar to this one:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;class&lt;/span&gt; MyObject&lt;span style="color: purple;"&gt;{&lt;/span&gt;
   &lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;string&lt;/span&gt; Symbol &lt;span style="color: purple;"&gt;{&lt;/span&gt;get&lt;span style="color: purple;"&gt;;&lt;/span&gt;set&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;span style="color: purple;"&gt;}&lt;/span&gt;
   &lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;double&lt;/span&gt; Value &lt;span style="color: purple;"&gt;{&lt;/span&gt;get&lt;span style="color: purple;"&gt;;&lt;/span&gt;set&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;span style="color: purple;"&gt;}&lt;/span&gt;
&lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: purple;"&gt;&lt;/span&gt;
myList&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Sort&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;a&lt;span style="color: #808030;"&gt;,&lt;/span&gt; b&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;=&amp;gt;&lt;/span&gt; a&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Symbol&lt;span style="color: #808030;"&gt;.&lt;/span&gt;CompareTo&lt;span style="color: #808030;"&gt;(&lt;/span&gt;b&lt;span style="color: #808030;"&gt;.&lt;/span&gt;Symbol&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-346493526584432182?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6nScWlI-ImWRnLq7Gv284Vwla0I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6nScWlI-ImWRnLq7Gv284Vwla0I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6nScWlI-ImWRnLq7Gv284Vwla0I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6nScWlI-ImWRnLq7Gv284Vwla0I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/erGGG6HnR1Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/346493526584432182/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/05/replace-foreach-with-lambda.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/346493526584432182?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/346493526584432182?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/erGGG6HnR1Y/replace-foreach-with-lambda.html" title="Replace foreach with Extension Methods and Lambda Expressions" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/05/replace-foreach-with-lambda.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4NRXYzfSp7ImA9Wx9SF0k.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-2794743961121238336</id><published>2010-05-20T12:42:00.000-07:00</published><updated>2010-12-07T10:03:14.885-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-07T10:03:14.885-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TFS" /><title>Get TFS Team Project Names</title><content type="html">Here is a method that returns a List of names of team projects available at &lt;b&gt;Team Foundation Server&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas,Courier New; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; GetProjects(&lt;span style="color: #2b91af;"&gt;TeamFoundationServer&lt;/span&gt; tfsServer) &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt; &amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; listProjects = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;ICommonStructureService&lt;/span&gt; iss = (&lt;span style="color: #2b91af;"&gt;ICommonStructureService&lt;/span&gt;)tfsServer.GetService(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;ICommonStructureService&lt;/span&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;ProjectInfo&lt;/span&gt;[] projectInfo = iss.ListProjects();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;ProjectInfo&lt;/span&gt; pi &lt;span style="color: blue;"&gt;in&lt;/span&gt; projectInfo)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; listProjects.Add (pi.Name);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; listProjects;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-2794743961121238336?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GUFiTtEM77SvR4vPuUINrTo69PQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GUFiTtEM77SvR4vPuUINrTo69PQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GUFiTtEM77SvR4vPuUINrTo69PQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GUFiTtEM77SvR4vPuUINrTo69PQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/nhn3bXaSNow" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/2794743961121238336/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/05/get-team-project-names.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/2794743961121238336?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/2794743961121238336?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/nhn3bXaSNow/get-team-project-names.html" title="Get TFS Team Project Names" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/05/get-team-project-names.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYFQHoyfCp7ImA9Wx5TGEk.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-5933382106394259391</id><published>2010-05-13T10:31:00.000-07:00</published><updated>2010-08-03T07:35:11.494-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-03T07:35:11.494-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Registry" /><title>Some Registry Methods</title><content type="html">Here are a couple of helper methods to work with Windows Registry:&lt;br /&gt;
The first method makes sure you get a reference to a registry subkey. If it does not exist it creates one first. The second one is a preferred way to read a registry value.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: white none repeat scroll 0% 0%; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin: 0px;"&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RegistryKey&lt;/span&gt; GetKey(&lt;span style="color: blue;"&gt;string&lt;/span&gt; RegKey)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;RegistryKey&lt;/span&gt; Key = &lt;span style="color: #2b91af;"&gt;Registry&lt;/span&gt;.CurrentUser.OpenSubKey(RegKey, &lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (Key == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Key = &lt;span style="color: #2b91af;"&gt;Registry&lt;/span&gt;.CurrentUser.CreateSubKey(RegKey);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; Key;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; ReadRegistryValue(&lt;span style="color: #2b91af;"&gt;RegistryKey&lt;/span&gt; key, &lt;span style="color: blue;"&gt;string&lt;/span&gt; regValName)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt;[] values = key.GetValueNames();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (values.Contains(regValName))&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; key.GetValue(regValName).ToString();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;String&lt;/span&gt;.Empty;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-5933382106394259391?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SvKobGP83ivod_5nNK-4zv7eFi4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SvKobGP83ivod_5nNK-4zv7eFi4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SvKobGP83ivod_5nNK-4zv7eFi4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SvKobGP83ivod_5nNK-4zv7eFi4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/9i7gYnYE3Z8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/5933382106394259391/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/05/some-registry-methods.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5933382106394259391?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5933382106394259391?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/9i7gYnYE3Z8/some-registry-methods.html" title="Some Registry Methods" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/05/some-registry-methods.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAFQXk9cSp7ImA9Wx9SGU0.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-5571556620460503594</id><published>2010-02-25T09:52:00.000-08:00</published><updated>2010-12-09T06:58:30.769-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-09T06:58:30.769-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="winform" /><category scheme="http://www.blogger.com/atom/ns#" term="DataGridView" /><title>Header Cell with CheckBox in DataGridView</title><content type="html">This is my version of a class that displays a check box in a &lt;b&gt;DataGridView&lt;/b&gt; Header cell.&lt;br /&gt;
This is based on the code from &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/827907ea-c529-4254-9b15-2e6d571f5c5b"&gt;http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/827907ea-c529-4254-9b15-2e6d571f5c5b&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It assumes that the check box is located in the first &lt;b&gt;DataGridView&lt;/b&gt; column. It allows for column caption and provides built-in check/uncheck functionality. Play with x and y parameters to place the checkbox where you want in the header cell.&lt;br /&gt;
&lt;br /&gt;
Here is a usage example:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Courier New; font-size: 10pt;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;DataGridViewColumn&lt;/span&gt; column = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DataGridViewCheckBoxColumn&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;CheckBox&lt;/span&gt; ckBoxMaster = CheckBoxInHeader.CreateCheckBoxInHeader(column, 12, 4, &lt;span style="color: #a31515;"&gt;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select All"&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;DataGridView1.Controls.Add(ckBoxMaster);&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
The class listing:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas; font-size: 11pt;"&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;CheckBoxInHeader&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; CheckBox CreateCheckBoxInHeader(DataGridViewColumn column, &lt;span style="color: blue;"&gt;int&lt;/span&gt; x, &lt;span style="color: blue;"&gt;int&lt;/span&gt; y, &lt;span style="color: blue;"&gt;string&lt;/span&gt; caption)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;CheckBoxInHeader&lt;/span&gt; cbInHeader = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;CheckBoxInHeader&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CheckBox ckBox = cbInHeader.CreateCheckBox(column, x, y, caption);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ckBox.CheckedChanged += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;(cbInHeader.ckBox_CheckedChanged);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; ckBox;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; CheckBox CreateCheckBox(DataGridViewColumn column, &lt;span style="color: blue;"&gt;int&lt;/span&gt; x, &lt;span style="color: blue;"&gt;int&lt;/span&gt; y, &lt;span style="color: blue;"&gt;string&lt;/span&gt; caption)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CheckBox ckBox = &lt;span style="color: blue;"&gt;new&lt;/span&gt; CheckBox();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//Get the column header cell bounds&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Rectangle rect = column.DataGridView.GetCellDisplayRectangle(0, -1, &lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ckBox.Size = &lt;span style="color: blue;"&gt;new&lt;/span&gt; Size(18, 18);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//play with check box position&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rect.Offset(x, y);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//Change the location of the CheckBox to make it stay on the header&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ckBox.Location = rect.Location;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; column.Name = caption;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; ckBox;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; ckBox_CheckedChanged(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CheckBox cb = sender &lt;span style="color: blue;"&gt;as&lt;/span&gt; CheckBox;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataGridView dgv = (DataGridView)cb.Parent;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (DataGridViewRow row &lt;span style="color: blue;"&gt;in&lt;/span&gt; dgv.Rows)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;a class="cssButton" href="javascript:void(0)" id="publishButton" onclick="if (this.className.indexOf(&amp;quot;ubtn-disabled&amp;quot;) == -1) {var e = document['postingForm'].publish;(e.length) ? e[0].click() : e.click(); if (window.event) window.event.cancelBubble = true; return false;}" target=""&gt;&lt;div class="cssButtonOuter"&gt;&lt;div class="cssButtonMiddle"&gt;&lt;div class="cssButtonInner"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; row.Cells[0].Value = cb.Checked;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-5571556620460503594?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A6G_kTSR5nO1YDOUsaA_F4sTLZc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A6G_kTSR5nO1YDOUsaA_F4sTLZc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A6G_kTSR5nO1YDOUsaA_F4sTLZc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A6G_kTSR5nO1YDOUsaA_F4sTLZc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/h9C-_UxcJ4k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/5571556620460503594/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/02/another-version-of-checkbox-in-header.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5571556620460503594?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/5571556620460503594?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/h9C-_UxcJ4k/another-version-of-checkbox-in-header.html" title="Header Cell with CheckBox in DataGridView" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/02/another-version-of-checkbox-in-header.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YERXkyeyp7ImA9WxFXGEo.&quot;"><id>tag:blogger.com,1999:blog-6212515559541223786.post-1599341638823711281</id><published>2010-02-18T12:49:00.000-08:00</published><updated>2010-05-26T04:58:24.793-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-26T04:58:24.793-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="winform" /><category scheme="http://www.blogger.com/atom/ns#" term="listbox" /><title>Double-Click to Close WinForm ListBox</title><content type="html">If you have a ListBox on a WinForm, and you want the double-click on a selected item to close the form, you need to create a handler for the ListBox double click event.&lt;br /&gt;
In the handling method, use the following code:&lt;br /&gt;
&lt;div style="font-family: Consolas; font-size: 11pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; listBox1_DoubleClick(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (listBox1.SelectedItem != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; listBox1.FindForm().DialogResult = DialogResult.OK;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt;or, you could use a generic version of the above code:&lt;br /&gt;
&lt;div style="font-family: Consolas; font-size: 11pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;ListBox listBox = sender &lt;span style="color: blue;"&gt;as&lt;/span&gt; ListBox ;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (listBox.SelectedItem != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; listBox.FindForm().DialogResult = DialogResult.OK;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; } &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6212515559541223786-1599341638823711281?l=c-sharpe.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wO8noQVreKojeCdkg57IW7SiwEY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wO8noQVreKojeCdkg57IW7SiwEY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wO8noQVreKojeCdkg57IW7SiwEY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wO8noQVreKojeCdkg57IW7SiwEY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CCodeAndnet/~4/jv57vapvk5k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://c-sharpe.blogspot.com/feeds/1599341638823711281/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://c-sharpe.blogspot.com/2010/02/double-click-to-close-winform-listbox.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/1599341638823711281?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6212515559541223786/posts/default/1599341638823711281?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CCodeAndnet/~3/jv57vapvk5k/double-click-to-close-winform-listbox.html" title="Double-Click to Close WinForm ListBox" /><author><name>Eric</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://c-sharpe.blogspot.com/2010/02/double-click-to-close-winform-listbox.html</feedburner:origLink></entry></feed>

