<p>I'm new to .NET, so please be patient with me ;)</p>

<p>On my Windows Form, I have a DataGridView that is bound to a data source. Since my grid is read-only, I have a set of controls (textbox, checkbox, etc.) outside the grid that will be used to edit the data.</p>

<p>I want the controls to be binded to the currently selected row in the grid. Currently, if I set the DataBindings of the controls to the same data source as the grid, only the first record is showned even if I move the record pointer in the grid.</p>

<p>What am I missing?</p>

<p>Environment: Windows Form, C#, Visual Studio 2008.</p>

You want to check out the custom datagridviewcolumn types that are available with the datagridview.
Add in special columns and then bind a list of business objects to the grid (or a DataSet).
I think you can even ask the grid to autogenerate sensible columns based upon the objects you give it.
I wouldn't recommend trying to stuff normal controls into the datagrid per se, there is a grid column framework based on cells, columns and editingcontrols that deals with this stuff. Have a little searchy on Google based on those kind of words (e.g DataBinding/DataGridViewEditingControl), i'm afraid I don't have my DataGridView resources to hand right now.
Oh wait, sorry I re-read. You'll want to look at the BindingContext object.