你要重写这个DataGrid中的列,代码如下:
public class DataGridNoActiveCellColumn : DataGridTextBoxColumn
{
private int nSelectedRowIndex = -1;
protected override void Edit(System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
{
if(nSelectedRowIndex> -1 && nSelectedRowIndex< source.List.Count + 1)
{
this.DataGridTableStyle.DataGrid.UnSelect(nSelectedRowIndex);
}
nSelectedRowIndex= rowNum;
this.DataGridTableStyle.DataGrid.Select(nSelectedRowIndex);
}
}
在DataGrid中用如下代码:
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName =ds.Tables[0].TableName;
int numCols = ds.Tables[0].Columns.Count;
DataGridTextBoxColumn textColumn;
for(int i = 0; i < numCols; ++i)
{
textColumn = new DataGridTextBoxColumn();
textColumn.HeaderText = ds.Tables[0].Columns[i].ColumnName;
textColumn.MappingName = ds.Tables[0].Columns[i].ColumnName;
tableStyle.GridColumnStyles.Add(textColumn);
tableStyle.AllowSorting=false;
}
this.TableStyles.Clear();
this.TableStyles.Add(tableStyle);
}
this.SetDataBinding(ds.Tables[0].DefaultView,null);
CurrencyManager cm = (CurrencyManager)this.BindingContext[this.DataSource, this.DataMember];自己在整理一下,如有问题联第我.