怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列

时间:2022-01-28 16:16:27
被问到一个问题:怎么把WinForms里的DataGrid的绑定了数据库bit字段的列默认显示的CheckBox换成“男”和“女”,也就是 说怎么样像ASP.NET的模板列那样可以自定义。(此处不考虑在SQL在用Case把数据结果转换了)
由于,基本没有搞过WinForms,所 以这个问题弄了很久才搞掂,可能对于WinForms高手来说,这是一个很简单的问题。(我搜了一下网页,没有找到直接的解决方案,问了一些搞过 WinForms的朋友,也没有直接的解决方案,所以把我的解决方案放在博客园首页,DUDU如觉不适合,请移除。)解决这个问题的副作用就是对 WinForms的机制有了一点了解。

最终实现效果:
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列

开始的思路还是ASP.NET的思路,企图用WinForms的DataGrid的事件来实现。试了 ControlAdde,BindingComplated等事件,都没有用,有些能拿到绑定时的控件,却拿不到对应的数据。
后来有朋友启发用 CurrencyManager来实现,试了半天,能拿到数据,又拿不到对应的绑定生成的控件了。
晕,后来还是控件开发的思想,既然可以用 DataGridTextBoxColumnStyle和DataGridBoolColumnStyle分别生成TextBox和CheckBox,为 什么不可以自定义一个DataGridColumnStyle来实现自定义呢?
结果还真是可行的:

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列// 用Label显示"男"和"女",并且点击一次变成相反的
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
     class  DataGridCustomBoolColumnStyle : DataGridColumnStyle
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列    
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
private Label _customLabel = new Label();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
private bool _isEditing = false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
public DataGridCustomBoolColumnStyle()
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _customLabel.Visible 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _customLabel.Click 
+=new EventHandler(_customLabel_Click);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Abort(int rowNum)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _isEditing 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Invalidate();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
void _customLabel_Click(object sender, EventArgs e)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Label lbl 
= sender as Label;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (lbl.Text == "")
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                lbl.Text 
= "";
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
else
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                lbl.Text 
= "";
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
this._isEditing = true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
base.ColumnStartedEditing(_customLabel);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override object GetColumnValueAtRow(CurrencyManager source, int rowNum)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
object o = base.GetColumnValueAtRow(source, rowNum);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
bool value = true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (Convert.IsDBNull(o))
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                value 
= true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
else
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                value 
= (bool)o;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return value;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void SetDataGridInColumn(DataGrid value)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
base.SetDataGridInColumn(value);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (_customLabel.Parent != null)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                _customLabel.Parent.Controls.Remove(_customLabel);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (value != null)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                value.Controls.Add(_customLabel);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override bool Commit(CurrencyManager dataSource, int rowNum)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _customLabel.Bounds 
= Rectangle.Empty;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _customLabel.Visible 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (!_isEditing)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                
return true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _isEditing 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
try
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                
bool value = (_customLabel.Text == "");
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                SetColumnValueAtRow(dataSource, rowNum, value);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
catch (Exception)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                Abort(rowNum);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                
return false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Invalidate();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Edit(CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string displayText, bool cellIsVisible)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
bool value = (bool)GetColumnValueAtRow(source, rowNum);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (cellIsVisible)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                _customLabel.Bounds 
= new Rectangle(bounds.X + 2, bounds.Y + 2, bounds.Width - 4, bounds.Height - 4);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                _customLabel.Visible 
= true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
else
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                _customLabel.Visible 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _customLabel.Text 
= value ? "" : "";
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (_customLabel.Visible)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                DataGridTableStyle.DataGrid.Invalidate(bounds);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _customLabel.BackColor 
= Color.Red;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override int GetMinimumHeight()
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return _customLabel.PreferredHeight + 4;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override int GetPreferredHeight(System.Drawing.Graphics g, object value)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return _customLabel.PreferredHeight + 4;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override System.Drawing.Size GetPreferredSize(System.Drawing.Graphics g, object value)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return new Size(40, _customLabel.PreferredHeight + 4);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
bool value = (bool)GetColumnValueAtRow(source, rowNum);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            g.FillRectangle(backBrush, bounds);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            bounds.Offset(
02);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            bounds.Height 
-= 2;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            g.DrawString(value 
? "" : "", DataGridTableStyle.DataGrid.Font, foreBrush, bounds);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Paint(Graphics g,Rectangle bounds,CurrencyManager source,int rowNum)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Paint(g, bounds, source, rowNum, 
false);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source,int rowNum,bool alignToRight)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Brush coreBrush 
= _isEditing ? Brushes.Red : Brushes.White;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Brush backBrush 
= _isEditing ? Brushes.Blue : Brushes.Black;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Paint(
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                g, bounds,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                source,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                rowNum,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                coreBrush,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                backBrush,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                alignToRight);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列    }

 

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列// 使用方法
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
            DataGridTableStyle dgts  =  new  DataGridTableStyle();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            dgts.MappingName 
=  this .dataSet11.Employees.TableName;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
this .dataGrid1.TableStyles.Add(dgts);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            GridColumnStylesCollection gcsc 
=  dataGrid1.TableStyles[ 0 ].GridColumnStyles;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            DataGridBoolColumn dgbc 
=  gcsc[gcsc.Count  -  1 as  DataGridBoolColumn;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            DataGridCustomBoolColumnStyle dgcbc 
=  new  DataGridCustomBoolColumnStyle();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            dgcbc.MappingName 
=  dgbc.MappingName;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            gcsc.Remove(dgbc);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            gcsc.Add(dgcbc);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
this .employeesTableAdapter.Fill( this .dataSet11.Employees);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
this .dataGrid1.DataSource  =  this .dataSet11.Employees;

这个实现很简单,数据与显示之间的映射是固定的,既然简单的能实现,我们再来实现个复杂的,用ComboBox来表示一些固定值的选择,比如 enum和bool,因为数据库中的数据并没有enum,所以,这个DataGridComboBoxColumnStyle提供两个委托,可以数据到 ComboBox项和ComboBox项到数据之间做一个处理

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列// 可以灵活适应各种情况的ComboBox列样式
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
     public  delegate  string  FormatValueToString( object  value);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列    
public  delegate  object  ParseStringToValue( string  value);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列    
class  DataGridComboBoxColumnStyle:DataGridColumnStyle
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列    
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
public FormatValueToString FormartDelegate;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
public ParseStringToValue ParseDelegate;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
private bool _isEditing = false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
private ComboBox _combo = new ComboBox();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
public ComboBox InnerComboBox
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
get
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                
return _combo;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
public DataGridComboBoxColumnStyle()
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _combo.SelectedIndexChanged 
+= new EventHandler(_combo_SelectedIndexChanged);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _combo.Visible 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
void _combo_SelectedIndexChanged(object sender, EventArgs e)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
this._isEditing = true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
base.ColumnStartedEditing(_combo);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Abort(int rowNum)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _isEditing 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Invalidate();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void SetDataGridInColumn(DataGrid value)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
base.SetDataGridInColumn(value);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (_combo.Parent != null)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                _combo.Parent.Controls.Remove(_combo);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (value != null)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                value.Controls.Add(_combo);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列       
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override bool Commit(CurrencyManager dataSource, int rowNum)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _combo.Bounds 
= Rectangle.Empty;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _combo.Visible 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (!_isEditing)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                
return true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            _isEditing 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
try
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                
string value = _combo.SelectedText;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                SetColumnValueAtRow(dataSource, rowNum, value);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
catch (Exception)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                Abort(rowNum);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                
return false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Invalidate();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override object GetColumnValueAtRow(CurrencyManager source, int rowNum)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
object value = base.GetColumnValueAtRow(source, rowNum);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (Convert.IsDBNull(value))
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                value 
= this.NullText;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (FormartDelegate != null)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                value 
= FormartDelegate(value);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return value;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void SetColumnValueAtRow(CurrencyManager source, int rowNum, object value)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if(ParseDelegate != null)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                value 
= ParseDelegate((string)value);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
base.SetColumnValueAtRow(source, rowNum, value);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Edit(CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string displayText, bool cellIsVisible)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
string value = (string)GetColumnValueAtRow(source, rowNum);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (cellIsVisible)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                _combo.Bounds 
= new Rectangle(bounds.X + 2, bounds.Y + 2, bounds.Width - 4, bounds.Height - 4);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                _combo.Visible 
= true;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
else
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                _combo.Visible 
= false;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
for (int i = 0; i < _combo.Items.Count; i++)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                
if (value == (string)_combo.Items[i])
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                    _combo.SelectedIndex 
= i;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                    
break;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
if (_combo.Visible)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                DataGridTableStyle.DataGrid.Invalidate(bounds);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override int GetMinimumHeight()
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return _combo.PreferredHeight + 4;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override int GetPreferredHeight(System.Drawing.Graphics g, object value)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return _combo.PreferredHeight + 4;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override System.Drawing.Size GetPreferredSize(System.Drawing.Graphics g, object value)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
return new Size(100, _combo.PreferredHeight + 4);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
string value = (string)GetColumnValueAtRow(source, rowNum);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            g.FillRectangle(backBrush, bounds);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            bounds.Offset(
02);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            bounds.Height 
-= 2;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            g.DrawString(value, DataGridTableStyle.DataGrid.Font, foreBrush, bounds);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Paint(Graphics g,Rectangle bounds,CurrencyManager source,int rowNum)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Paint(g, bounds, source, rowNum, 
false);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source,int rowNum,bool alignToRight)
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        
{
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Brush coreBrush 
= _isEditing ? Brushes.Red : Brushes.White;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Brush backBrush 
= _isEditing ? Brushes.Blue : Brushes.Black;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            Paint(
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                g, bounds,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                source,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                rowNum,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                coreBrush,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                backBrush,
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列                alignToRight);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列        }

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列    }

 

怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列// 使用方法
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
            DataGridTableStyle dgts  =  new  DataGridTableStyle();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            dgts.MappingName 
=  this .dataSet11.Employees.TableName;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
this .dataGrid1.TableStyles.Add(dgts);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            GridColumnStylesCollection gcsc 
=  dataGrid1.TableStyles[ 0 ].GridColumnStyles;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            DataGridBoolColumn dgbc 
=  gcsc[gcsc.Count  -  1 as  DataGridBoolColumn;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            DataGridComboBoxColumnStyle dgcbc 
=  new  DataGridComboBoxColumnStyle();
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            dgcbc.MappingName 
=  dgbc.MappingName;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
// 这里定义ComboBOx的样式和项,因为整个ComboBox都公开了,所以随你怎 么设置都行
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
            dgcbc.InnerComboBox.Items.Add( " " );
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            dgcbc.InnerComboBox.Items.Add(
" " );
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            dgcbc.InnerComboBox.DropDownStyle 
=  ComboBoxStyle.DropDownList;
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
// 这里定义数据和ComboBOx项之间如何转换
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
            dgcbc.ParseDelegate  =  new  ParseStringToValue(ParseStringToBool);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            dgcbc.FormartDelegate 
=  new  FormatValueToString(FormatBoolToString);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            gcsc.Remove(dgbc);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            gcsc.Add(dgcbc);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
this .employeesTableAdapter.Fill( this .dataSet11.Employees);
怎样让WinForms下DataGrid可以像ASP.NET下的DataGrid一样使用自定义的模板列            
this .dataGrid1.DataSource  =  this .dataSet11.Employees;


熟悉WinForms的设计思路之后,我们又可以像用ASP.NET的DataGird一样用DataGrid了。
WinForms 我是新手,请多指教。。。