<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Coding Geek : .NET</title><link>http://weblogs.asp.net/nadeemiqbal/archive/tags/.NET/default.aspx</link><description>Tags: .NET</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Upload file Directly to Amazon S3 using C# via POST </title><link>http://weblogs.asp.net/nadeemiqbal/archive/2009/06/05/upload-file-directly-to-amazon-s3-using-c-silverlight-via-post.aspx</link><pubDate>Fri, 05 Jun 2009 13:08:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7108837</guid><dc:creator>niqbal</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/nadeemiqbal/rsscomments.aspx?PostID=7108837</wfw:commentRss><comments>http://weblogs.asp.net/nadeemiqbal/archive/2009/06/05/upload-file-directly-to-amazon-s3-using-c-silverlight-via-post.aspx#comments</comments><description>&lt;p&gt;There are scenarios when you want to directly upload the file from the client browser/application to S3.&lt;/p&gt;
&lt;p&gt;Amazon provides simple POST method to upload files to amazon &lt;a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?HTTPPOSTForms.html#HTTPPOSTFormFields" title="File Upload" mce_href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?HTTPPOSTForms.html#HTTPPOSTFormFields"&gt;File Upload&lt;/a&gt;. That method is not acceptable when you want to upload the file(s) programatically using any programming language such as C# or by using the Silverlight.&lt;/p&gt;
&lt;p&gt;C# doesn't provide the support of&amp;nbsp; "multipart/form-data" form posting which is required to upload directly to the S3. So, HttpWebRequest class can be configured so that it will send the request in the required format.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;So, I've written a custom class which will generate the request contents in "multipart/form-data" format.&lt;/p&gt;&lt;p&gt;Below is the code how to use that custom class and upload to the amazon S3 directly using C#/SilverLight &lt;br&gt;&lt;/p&gt;
&lt;font color="blue"&gt;
&lt;p&gt;UploadFile uf = new UploadFile("file.txt", "file", "txt/html"); // file should be in bin directory&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; string []a = new string[5];&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; UploadFile[] files = new UploadFile[1];&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; files[0] = uf;&lt;br&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; NameValueCollection form = new NameValueCollection();&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; form["key"] = "file.txt";&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; form["acl"] = "public-read";&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; form["success_action_redirect"] = "http://www.yahoo.com";&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; &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; form["x-amz-meta-uuid"] = "14365123651274";&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; form["x-amz-meta-tag"] = "";&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; form["AWSAccessKeyId"] = "zzzzzzzz";&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; form["Policy"] = "zzzzzzzzzzzzzzzzzzzzzzzz";&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; form["Signature"] = "zzzzzzzzzzzzzzzzzzzzzzzzz";&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; &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; &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; string url = "http://MyBucket.s3.amazonaws.com/"; &lt;br&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; string resultQuery = HttpUploadHelper.Upload(url, files, form);&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; Console.WriteLine(resultQuery);&lt;br&gt;&amp;nbsp;&lt;/p&gt;
CHEERS :)&lt;br&gt;

&lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7108837" width="1" height="1"&gt;</description><enclosure url="http://weblogs.asp.net/nadeemiqbal/attachment/7108837.ashx" length="64480" type="application/zip" /><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/Windows+Forms/default.aspx">Windows Forms</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/.NET+FAQ/default.aspx">.NET FAQ</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/CLR/default.aspx">CLR</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/SilverLight/default.aspx">SilverLight</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/SilverLight+DataGrid/default.aspx">SilverLight DataGrid</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/SilverLight+DataGrid+Dynmic+Binding/default.aspx">SilverLight DataGrid Dynmic Binding</category></item><item><title>Working @ SnapFlow - BPM Solution</title><link>http://weblogs.asp.net/nadeemiqbal/archive/2009/03/04/working-snapflow-bpm-solution.aspx</link><pubDate>Wed, 04 Mar 2009 06:18:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6937061</guid><dc:creator>niqbal</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/nadeemiqbal/rsscomments.aspx?PostID=6937061</wfw:commentRss><comments>http://weblogs.asp.net/nadeemiqbal/archive/2009/03/04/working-snapflow-bpm-solution.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.SnapFlow.com" title="SnapFlow" mce_href="http://www.SnapFlow.com"&gt;SnapFlow&lt;/a&gt; is a RIA Application develop on the Cutting Edge Microsoft Technologies such as SilverLight, ASP.Net 3.5, LINQ, WCF, WWF and SQL Server 2005.&lt;/p&gt;

&lt;p&gt;SnapFlow is a workflow-making platform that helps you coordinate your
work with anyone so that you can get things done. And with our
super-simple tool, you can build a flow that reflects your unique
process.&lt;/p&gt;

&lt;p&gt;SnapFlow provides the interactive interface for designing the workflows by dragging and dropping items. &lt;br&gt;&lt;/p&gt;

&lt;p&gt;I really enjoyed being the part of the SnapFlow Development team and worked on the SilverLight part of the application. The application extensively use the Reflection for generating the classes and collections on the fly as well as populating the controls with dynamic collections such as DataGrid etc..&lt;/p&gt;

&lt;p&gt;I really appreciate the effort of &lt;i&gt;Tim Heuer&lt;/i&gt; for writing excellent blog on SnapFlow &lt;a href="http://timheuer.com/blog/archive/2009/03/03/develop-workflows-with-silverlight.aspx" title="Method~Of~Failed" mce_href="http://timheuer.com/blog/archive/2009/03/03/develop-workflows-with-silverlight.aspx"&gt;Method~Of~Failed&lt;/a&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6937061" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/CLR/default.aspx">CLR</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/WPF/default.aspx">WPF</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/SilverLight/default.aspx">SilverLight</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/SilverLight+DataGrid/default.aspx">SilverLight DataGrid</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/SilverLight+DataGrid+Dynmic+Binding/default.aspx">SilverLight DataGrid Dynmic Binding</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/unit+test+framework/default.aspx">unit test framework</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/BPM/default.aspx">BPM</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/Business+Process+Management/default.aspx">Business Process Management</category></item><item><title>SilverLight DataGrid Binding</title><link>http://weblogs.asp.net/nadeemiqbal/archive/2008/10/06/silverlight-datagrid-binding.aspx</link><pubDate>Mon, 06 Oct 2008 06:15:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6658965</guid><dc:creator>niqbal</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/nadeemiqbal/rsscomments.aspx?PostID=6658965</wfw:commentRss><comments>http://weblogs.asp.net/nadeemiqbal/archive/2008/10/06/silverlight-datagrid-binding.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;I was working on the unbound SilverLight DataGrid and thought to write one in this regard,&lt;br&gt;&lt;/p&gt;

&lt;p&gt;There are scenarios when you don't have a predefined collection of objects to bind to SilverLight DataGrid or you don't know the structure of the object to bind with untill run time. For Example you want to bind the DataGrid with XML or to any other source.&lt;/p&gt;

&lt;p&gt;So the way is to Create the Structure (Type/Class) of object dynamically on the fly and then build the generic List of newly created Type and bind it to SilverLight DataGrid. Moreover you want to add the new empty rows in grid, get the object bound to that row, Extract the values from the bound object, delete a row etc......&lt;/p&gt;


&lt;p&gt;&amp;nbsp;Lets first look at how to create a new Type(class) on the fly with properties and bind it to the DataGrid;&lt;br&gt;&lt;/p&gt;

&lt;a href="http://www.simple-talk.com/dotnet/.net-framework/dynamically-generating--typed-objects-in-.net" mce_href="http://www.simple-talk.com/dotnet/.net-framework/dynamically-generating--typed-objects-in-.net"&gt;Dynamic Typed Objects Creation by Vladimir Bodurov&lt;/a&gt; (thanks)
&lt;p&gt;Update the DataSourceCreator class&amp;nbsp; to add a public property to maintain the type of the new structure&lt;br&gt;&lt;/p&gt;
&lt;font color="Blue"&gt;
&lt;p&gt;public static Type getType{get; set;} &lt;/p&gt;
&lt;/font&gt;
&lt;p&gt;and set this property before the last return statement of the ToDataSource function&lt;/p&gt;
&lt;font color="Blue"&gt;
&lt;p&gt;getType = tb.CreateType();&amp;nbsp; &lt;br&gt;&lt;/p&gt;
&lt;/font&gt;

&lt;p&gt;&lt;b&gt;Now how to get the bound Object of selected row of DataGrid on a button click &amp;amp; get values of the properties&lt;/b&gt;&lt;br&gt;&lt;/p&gt;
&lt;font color="Blue"&gt;
&lt;p&gt;var item = Activator.CreateInstance(DataSourceCreator.getType);&lt;br&gt;int index = mygrid.SelectedIndex;&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; &lt;br&gt;item = mygrid.SelectedItems[0];&lt;br&gt;&lt;br&gt;MethodInfo theMethod = DataSourceCreator.getType.GetMethod("get_Column1");&lt;br&gt;object res = theMethod.Invoke(item, new object[0]);&amp;nbsp;&amp;nbsp; &lt;/p&gt;

&lt;/font&gt;
&lt;p&gt;in the above code i created the new var variable of the Type and stores the selected bound object in it. And then using reflection extracted the value of the property Column1.&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Lets Add new row in SilverLight DataGrid&lt;/b&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;
&lt;font color="Blue"&gt;
&lt;p&gt;&amp;nbsp;IEnumerable&amp;lt;object&amp;gt; collection = mygrid.ItemsSource.Cast&amp;lt;object&amp;gt;();&lt;br&gt;List&amp;lt;object&amp;gt; list = collection.ToList();&lt;/p&gt;

&lt;p&gt;&lt;br&gt;var item = Activator.CreateInstance(DataSourceCreator.getType);&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;&lt;br&gt;list.Add(item);&lt;br&gt;&lt;br&gt;mygrid.ItemsSource = list;&lt;/p&gt;
&lt;/font&gt;
It first gets the bound collection of the DataGrid and then adds a new object into the collection&lt;br&gt;&lt;br&gt;Similarly you can remove an object from the bound collection &lt;/p&gt;
&lt;font color="Blue"&gt;
&lt;p&gt;list.Remove(item) &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Its all about Unbound Simulation of SilverLight DataGrid. Cheers :) &lt;br&gt;&lt;/p&gt;
&lt;/font&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6658965" width="1" height="1"&gt;</description><enclosure url="http://weblogs.asp.net/nadeemiqbal/attachment/6658965.ashx" length="1628207" type="application/x-zip-compressed" /><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/.NET+FAQ/default.aspx">.NET FAQ</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/CLR/default.aspx">CLR</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/WPF/default.aspx">WPF</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/SilverLight/default.aspx">SilverLight</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/SilverLight+DataGrid/default.aspx">SilverLight DataGrid</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/SilverLight+DataGrid+Dynmic+Binding/default.aspx">SilverLight DataGrid Dynmic Binding</category></item><item><title>Customizing DataGridView</title><link>http://weblogs.asp.net/nadeemiqbal/archive/2008/07/01/overriding-customizing-datagrid-default-behavior.aspx</link><pubDate>Tue, 01 Jul 2008 06:11:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6343765</guid><dc:creator>niqbal</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/nadeemiqbal/rsscomments.aspx?PostID=6343765</wfw:commentRss><comments>http://weblogs.asp.net/nadeemiqbal/archive/2008/07/01/overriding-customizing-datagrid-default-behavior.aspx#comments</comments><description>&lt;p&gt;You can customize the DataGridView to work the way you want. There are scenarios when default behavior of the DataGridView is not sufficient to fulfill the requirements. For example you want to override the behavior of DataGridView such that when i press enter key on a particular cell the cursor/focus move to the cell below to that cell not in the next cell (which is default behavior) similarly while editing data in DataGridView you don't want that the cursor move to the first cell of the next row after editing a row however you want to skip the first column for editing e.g there is an row counter in the first column and you don't want to edit it.&lt;/p&gt;

&lt;p&gt;So lets dig into customizing the DataGridView and make it the way we want.... &lt;/p&gt;

&lt;p&gt;In this sample we modify the DataGridView Behavior as follows; On pressing enter on any cell it creates the new DataGridView row below to that cell and when tab button is pressed at the last cell of the row it creates the new row and moves the cursor to the second cell of the new row (skipping the first column).&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;img src="http://weblogs.asp.net/blogs/nadeemiqbal/Custom%20grid%20View.JPG" title="Sample DataGrid" alt="Sample DataGrid" mce_src="http://weblogs.asp.net/blogs/nadeemiqbal/Custom%20grid%20View.JPG" width="717" align="middle" height="301"&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;In order to customize the DataGrid, we would have to create a new Component which will directly inherit from the DataGridView as;&lt;/p&gt;

&lt;p&gt;&lt;font color="blue"&gt;&amp;nbsp;public partial class myDGView : DataGridView&lt;/font&gt; &lt;br&gt;&lt;/p&gt;

&lt;p&gt;and we will required to override the following two methods;&lt;/p&gt;
&lt;font color="blue"&gt;
&lt;/font&gt;
&lt;ul&gt;
&lt;li&gt;&lt;font color="blue"&gt;
&lt;p&gt;protected override bool ProcessDialogKey(Keys keyData) &lt;/p&gt;
&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This method is called during message preprocessing to handle dialog characters, such as TAB, RETURN, ESCAPE, and arrow keys. &lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;font color="blue"&gt;
&lt;p&gt;protected override bool ProcessDataGridViewKey(KeyEventArgs e) &lt;/p&gt;
&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Processes keys used for navigating in the DataGridView &lt;/p&gt;

&lt;p&gt;In both of the above methods; we do much the same thing. We check which key has been pressed and then respond accordingly;&lt;/p&gt;

&lt;p&gt;The below code snippets checks the key pressed and then adds the new row below the current row &lt;br&gt;&lt;/p&gt;
&lt;font color="blue"&gt;
&lt;p&gt;if (keyData == Keys.Enter)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.Rows.Insert(base.CurrentRow.Index + 1, 1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.SelectedCells[0].Selected = false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.Rows[base.CurrentRow.Index + 1 + 1].Cells[1].Selected = true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.CurrentCell = base.Rows[base.CurrentRow.Index + 1 ].Cells[1];&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;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true; &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; } &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/font&gt;
&lt;p&gt;The source code is attached which contains the C# Library Project sample code. Which will generate the DLL which you can add in your Visual Studio's Toolbox by just drag &amp;amp; drop and can use the customized DataGridView as an simple DataGridView. &lt;br&gt;&lt;/p&gt;

&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6343765" width="1" height="1"&gt;</description><enclosure url="http://weblogs.asp.net/nadeemiqbal/attachment/6343765.ashx" length="14214" type="application/zip" /><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/Windows+Forms/default.aspx">Windows Forms</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/.NET+FAQ/default.aspx">.NET FAQ</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/CLR/default.aspx">CLR</category><category domain="http://weblogs.asp.net/nadeemiqbal/archive/tags/DataGridView/default.aspx">DataGridView</category></item></channel></rss>