我程序中的一个程序段
有你要的: dgdFunctionArea = new System.Windows.Forms.DataGrid();
dgdFunctionArea.BackgroundColor = System.Drawing.SystemColors.ActiveCaptionText;
dgdFunctionArea.CaptionVisible = true;
dgdFunctionArea.DataMember = "";
dgdFunctionArea.HeaderForeColor = System.Drawing.SystemColors.ControlText;
dgdFunctionArea.Location = new System.Drawing.Point(3, 7);
dgdFunctionArea.Name = "dgdFunctionArea";
    
dgdFunctionArea.Size = new System.Drawing.Size(264, 156);
dgdFunctionArea.TabIndex = 0;

//MessageBox.Show(this.dgdFunctionArea.PreferredRowHeight.ToString());
dgdFunctionArea.DataSourceChanged +=new EventHandler(dgdFunctionArea_DataSourceChanged);
this.dgdFunctionArea.CurrentCellChanged +=new EventHandler(dgdFunctionArea_CurrentCellChanged);

MessageBox.Show(this.dgdFunctionArea.PreferredRowHeight.ToString());

MessageBox.Show(this.dgdFunctionArea.PreferredRowHeight.ToString());
parent.Controls.Add(dgdFunctionArea);
//  ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).EndInit();
//创建一个DataTable对象,包括四列,前三列为String,最后一列为Boolean。
        
dtblFunctionalArea  = new DataTable ("FunctionArea");
            dtblFunctionalArea.ColumnChanging +=new DataColumnChangeEventHandler(dtblFunctionalArea_ColumnChanging);
dtblFunctionalArea.ColumnChanged +=new DataColumnChangeEventHandler(dtblFunctionalArea_ColumnChanged);
string[] arrstrFunctionalArea = new string [7]{"字段名","别名","类型","长度","是否允许为空","是否唯一","默认值"}; DataColumn dtCol = null; //创建String列        for(int i=0; i< 4;i++) {     dtCol = new DataColumn(arrstrFunctionalArea[i]); dtCol.DataType  = Type.GetType("System.String"); dtCol.DefaultValue = ""; dtblFunctionalArea.Columns.Add(dtCol);   
             }     
      //创建Boolean列,用CheckedBox来显示。    
for(int i=4; i<6;i++)
{
dtCol = new DataColumn(arrstrFunctionalArea[i]);
dtCol.DataType = System.Type.GetType("System.Boolean"); dtCol.DefaultValue = false; dtblFunctionalArea.Columns.Add(dtCol);
} dtCol = new DataColumn(arrstrFunctionalArea[6]); dtCol.DataType  = Type.GetType("System.String"); dtCol.DefaultValue = null; dtblFunctionalArea.Columns.Add(dtCol);    DataColumn myColumn = new DataColumn();
myColumn.DataType = System.Type.GetType("System.Int32");
myColumn.AutoIncrement = true;
myColumn.AutoIncrementSeed = 1000;
myColumn.AutoIncrementStep = 10;
            dtblFunctionalArea.Columns.Add(myColumn);          
//把表绑定到DataGrid
dtblFunctionalArea.Rows.Add(new string[7]{"0","1","int","1","true","false","ddd"});
dtblFunctionalArea.Rows.Add(new string[7]{"0","1","int","1","true","false","ddd"});           
dgdFunctionArea.DataSource  = dtblFunctionalArea;              //为DataGrid加载DataGridTableStyle样式 if(!dgdFunctionArea.TableStyles.Contains("FunctionArea")) { DataGridTableStyle dgdtblStyle = new DataGridTableStyle(); dgdtblStyle.MappingName = dtblFunctionalArea.TableName;
dgdtblStyle.PreferredRowHeight = 22; dgdFunctionArea.TableStyles.Add(dgdtblStyle);
//设置列的宽度  
GridColumnStylesCollection colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles; colStyle[0].Width = 50;
colStyle[1].Width = 50;
colStyle[2].Width = 50;
colStyle[3].Width = 50;
colStyle[4].Width = 80;
colStyle[5].Width = 60;
colStyle[6].Width = 60; }  DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[1];  ComboBox cmbFunctionArea = new ComboBox(); cmbFunctionArea.Items.AddRange(new object[]{"nvarchar","bit","int","datatime"}); cmbFunctionArea.Cursor = Cursors.Arrow; cmbFunctionArea.DropDownStyle= ComboBoxStyle.DropDownList; cmbFunctionArea.Dock = DockStyle.Fill;
//在选定项发生更改并且提交了该更改后发生
            Button cmbFunctionArea = new Button();
cmbFunctionArea.Text = "Button1";
cmbFunctionArea.TextAlign = System.Drawing.ContentAlignment.TopLeft;
//把ComboBox添加到DataGridTableStyle的第一列
dgtb.TextBox.Controls.Add(cmbFunctionArea);