感觉先用的方法不太好,现在换一种写法。利用style来控制datagrid的格式,果然比上一种方法灵活多了!下面的改过的代码:
private void setup()
{
//创建dataset
makeDataSet();
//绑定myDataSet
}
public void makeDataSet()
{
//创建dataset实例
myDataSet=new DataSet("myDataSet");
//创建表DataTable的实例
//添加表项目
dataTable.Columns.Add("cComputerName");//电脑名称
dataTable.Columns.Add("cIpAddress");//IP地址
dataTable.Columns.Add("cMac");//网卡mac地址
dataTable.Columns.Add("cUser");//当前用户
dataTable.Columns.Add("cOther");//其它内容
dataTable.Columns.Add("V");//用来隐藏输入焦点的列
adddata();
//将dataGrid1设为只读
dataGrid1.ReadOnly=true;
//指定dataGrid1列的外观
dataGrid1.SetDataBinding(dataTable,"");
DataGridTableStyle dataGridTableStyle=new DataGridTableStyle(false);
dataGridTableStyle.MappingName="dataTable";
dataGridTableStyle.AllowSorting=true;
dataGridTableStyle.RowHeadersVisible=false;
dataGridTableStyle.GridColumnStyles.Clear();
//表格第0列
DataGridTextBoxColumn scComPuterName=new DataGridTextBoxColumn();
scComPuterName.MappingName="cComputerName";
scComPuterName.HeaderText="电脑名称";
scComPuterName.Alignment=HorizontalAlignment.Center;
scComPuterName.Width=dataGrid1.Size.Width/100*15;
scComPuterName.ReadOnly=true;
dataGridTableStyle.GridColumnStyles.Add(scComPuterName);
//第1列
DataGridTextBoxColumn scIpAddress=new DataGridTextBoxColumn();
scIpAddress.MappingName="cIpAddress";
scIpAddress.HeaderText="IP地址";
scIpAddress.Alignment=HorizontalAlignment.Center;
scIpAddress.Width=dataGrid1.Size.Width/100*25;
scIpAddress.ReadOnly=true;
dataGridTableStyle.GridColumnStyles.Add(scIpAddress);
//第2列
DataGridTextBoxColumn scMac=new DataGridTextBoxColumn();
scMac.MappingName="cMac";
scMac.HeaderText="MAC地址";
scMac.Alignment=HorizontalAlignment.Center;
scMac.Width=dataGrid1.Size.Width/100*25;
scMac.ReadOnly=true;
dataGridTableStyle.GridColumnStyles.Add(scMac);
//第3列
DataGridTextBoxColumn scUser=new DataGridTextBoxColumn();
scUser.MappingName="cUser";
scUser.HeaderText="当前用户";
scUser.Alignment=HorizontalAlignment.Center;
scUser.Width=dataGrid1.Size.Width/100*15;
scUser.ReadOnly=true;
dataGridTableStyle.GridColumnStyles.Add(scUser);
//第4列
DataGridTextBoxColumn scOther=new DataGridTextBoxColumn();
scOther.MappingName="cOther";
scOther.HeaderText="其它内容";
scOther.Alignment=HorizontalAlignment.Center;
scOther.Width=dataGrid1.Size.Width/100*30;
scOther.ReadOnly=true;
dataGridTableStyle.GridColumnStyles.Add(scOther);
//第5列,隐藏输入焦点的列
DataGridTextBoxColumn sV=new DataGridTextBoxColumn();
sV.MappingName="V";
sV.HeaderText="";
sV.Alignment=HorizontalAlignment.Center;
sV.Width=0;
sV.ReadOnly=true;
dataGridTableStyle.GridColumnStyles.Add(sV);
dataGrid1.TableStyles.Clear();
dataGrid1.TableStyles.Add(dataGridTableStyle);
}
private void dataGrid1_Navigate(object sender, System.Windows.Forms.NavigateEventArgs ne)
{
}
private void dataGrid1_CurrentCellChanged()
{
dataGrid1.CurrentCell = new DataGridCell(dataGrid1.CurrentCell.RowNumber,2);
}
private void adddata()
{
//添加测试数据
for (int i=0;i<10;i++)
{
DataRow dataRow=dataTable.NewRow();
dataRow["cComputerName"]="wuwj";
dataRow["cIpAddress"]="192.168.10.30";
dataRow["cMac"]="11-11-11-11-11";
dataRow["cUser"]="wwj";
dataRow["cOther"]="";
dataRow["V"]="";
dataTable.Rows.Add(dataRow);
}
}