Try this one...
I have got the code somewhere from planet-source-code.com..
May this helps you.
1) Add a Datagrid to the form. Name it DataGrid1
2) Paste the code below as it is.
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.DataGrid1 = New System.Windows.Forms.DataGrid()
CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'DataGrid1
'
Me.DataGrid1.DataMember = ""
Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
Me.DataGrid1.Location = New System.Drawing.Point(8, 8)
Me.DataGrid1.Name = "DataGrid1"
Me.DataGrid1.Size = New System.Drawing.Size(584, 280)
Me.DataGrid1.TabIndex = 0
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(600, 301)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.DataGrid1})
Me.Name = "Form1"
Me.Text = "Form1"
CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
Private DataTest As New DataGridTextBoxColumn()
Private WithEvents Combo As New ComboBox()
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim DBTable As New DataTable("Control"

Dim Strar(2) As String
Strar(0) = "Name"
Strar(1) = "ControlCol"
Strar(2) = "Description"
Dim i As Integer
For i = i To 2
Dim DBFD As New DataColumn(Strar(i))
DBFD.DefaultValue = ""
DBFD.DataType = System.Type.GetType("System.String"
DBTable.Columns.Add(DBFD)
Next
DBTable.TableName = "Control"
DataGrid1.DataSource = DBTable
i = 0
For i = i To 4
DBTable.LoadDataRow(Strar, True) ';
DataGrid1(i, 0) = "My Name is Joe"
DataGrid1(i, 1) = "This is a Control Col but oh well"
DataGrid1(i, 2) = "Some description"
Next
Dim dgdtblStyle As New DataGridTableStyle()
dgdtblStyle.MappingName = "Control"
dgdtblStyle.RowHeadersVisible = False ';
dgdtblStyle.HeaderBackColor = Color.LightSteelBlue ';
dgdtblStyle.AllowSorting = False ';
dgdtblStyle.HeaderBackColor = Color.Navy ';//.FromArgb(8,36,107);
dgdtblStyle.HeaderForeColor = Color.White ';
dgdtblStyle.HeaderFont = New System.Drawing.Font("Microsoft Sans Serif", 9.0F, FontStyle.Bold, GraphicsUnit.Point, 0) ';
dgdtblStyle.GridLineColor = Color.DarkGray ';
dgdtblStyle.PreferredRowHeight = Combo.Height
DataGrid1.BackgroundColor = Color.White ';
Dim Data1 As New DataGridTextBoxColumn()
Data1.MappingName = "Name"
Data1.HeaderText = "Name"
dgdtblStyle.GridColumnStyles.Add(Data1)
DataTest.MappingName = "ControlCol"
DataTest.HeaderText = "Control"
AddHandler DataTest.TextBox.Enter, AddressOf testthis
dgdtblStyle.GridColumnStyles.Add(DataTest)
Dim Data2 As New DataGridTextBoxColumn()
Data2.MappingName = "description"
Data2.HeaderText = "Description"
dgdtblStyle.GridColumnStyles.Add(Data2)
DataGrid1.TableStyles.Clear()
DataGrid1.TableStyles.Add(dgdtblStyle)
End Sub
Private Sub testthis(ByVal Sender As Object, ByVal e As EventArgs)
Dim List As New ArrayList()
List.Add(New ListValues("HI man", "1"

)
List.Add(New ListValues("HI man2", "2"

)
List.Add(New ListValues("HI man3", "3"

)
List.Add(New ListValues("HI man4", "4"

)
List.Add(New ListValues("HI man5", "5"

)
Combo.DataSource = List
Combo.DisplayMember = "LongName"
Combo.ValueMember = "ShortName"
DataTest.Width = Combo.Width
DataTest.TextBox.Controls.Add(Combo)
Combo.BringToFront()
End Sub
Private Sub Combo_select(ByVal sender As Object, ByVal e As System.EventArgs) Handles Combo.SelectionChangeCommitted
DataGrid1(DataGrid1.CurrentCell) = Combo.SelectedValue
End Sub
End Class
Public Class ListValues
Private myShortName As String
Private myLongName As String
Public Sub New(ByVal strlongName As String, ByVal strShortName As String)
MyBase.New()
Me.myShortName = strShortName
Me.myLongName = strlongName
End Sub
Public ReadOnly Property ShortName() As String
Get
Return myShortName
End Get
End Property
Public ReadOnly Property LongName() As String
Get
Return myLongName
End Get
End Property
Public Overrides Function ToString() As String
Return Me.ShortName & " - " & Me.LongName
End Function
End Class
Regards,
Rajesh and to the People at planet-source-code.com