我写了一个方法,语句如下:
                           DataGridTableStyle ts1 = new DataGridTableStyle();
// ts1.MappingName = "TemperatureWarn";
// DataGridTextBoxColumn myDataCol1=new  DataGridTextBoxColumn();
myDataCol1.HeaderText="报警温度下限";
// myDataCol1.Width =500;
//
// myDataCol1.MappingName="TemperatureL";
// ts1.GridColumnStyles.Add(myDataCol1);
//
// dgWarn.TableStyles.Add(ts1);
程序执行完后,datagrid的列名变了.但是列宽却没变,这是什么原因呀..我真是纳闷死了呀....
哪位GG帮忙解决一下,不甚感激呀.....

解决方案 »

  1.   

    我给你一个例子:
    dtgChequeList.DataSource = dsChequeList.Tables[0];//添加表格样式
    DataGridTableStyle dtgStyle = new DataGridTableStyle();
    dtgStyle.RowHeadersVisible = false;
    DataTable dt = (DataTable) dtgChequeList.DataSource;
    dtgStyle.MappingName = dt.TableName;
    //第一列
    DataGridTextBoxColumn dtgColumnStyle0 = new DataGridTextBoxColumn();
    dtgColumnStyle0.TextBox.Enter += new System.EventHandler(TextBoxEnterHandle);
    dtgColumnStyle0.MappingName = dt.Columns[0].ColumnName; //from dataset table
    dtgColumnStyle0.HeaderText = dt.Columns[0].ColumnName;
    dtgColumnStyle0.Width = 0;
    dtgColumnStyle0.ReadOnly=true;
    dtgStyle.GridColumnStyles.Add(dtgColumnStyle0);
    //第二列
    DataGridTextBoxColumn dtgColumnStyle1 = new DataGridTextBoxColumn();
    dtgColumnStyle1.TextBox.Enter += new System.EventHandler(TextBoxEnterHandle);
    dtgColumnStyle1.MappingName = dt.Columns[1].ColumnName; //from dataset table
    dtgColumnStyle1.Width = 50;
    dtgColumnStyle1.ReadOnly=true;
    dtgColumnStyle1.HeaderText = "影像ID";
    dtgColumnStyle1.Alignment = HorizontalAlignment.Center;
    dtgStyle.GridColumnStyles.Add(dtgColumnStyle1);
    //第三列
    DataGridTextBoxColumn dtgColumnStyle2 = new DataGridTextBoxColumn();
    dtgColumnStyle2.TextBox.Enter += new System.EventHandler(TextBoxEnterHandle);
    dtgColumnStyle2.MappingName = dt.Columns[2].ColumnName; //from dataset table
    dtgColumnStyle2.Width = 150;
    dtgColumnStyle2.ReadOnly=true;
    dtgColumnStyle2.HeaderText = "票据类型";
    dtgStyle.GridColumnStyles.Add(dtgColumnStyle2);
    //添加总样式到DataGrid上
    dtgStyle.PreferredRowHeight = 20;
    dtgStyle.BackColor = System.Drawing.Color.White;
    dtgStyle.AlternatingBackColor = System.Drawing.Color.LightGray;
    this.dtgChequeList.TableStyles.Clear();
    this.dtgChequeList.TableStyles.Add(dtgStyle);
      

  2.   

    sample in my blog
    http://blog.csdn.net/knight94/archive/2006/03/17/627556.aspx
      

  3.   

    你是不是在DataGrid控件中的TableStyle属性追加了一列,这时它的列宽也同时设置了,
    所以你在代码中改列宽是起不了作用的.以下是建立一个空的Form,在上面只加了一个DataGrid控件后的Load代码,这样是可以随便设置private void Form1_Load(object sender, System.EventArgs e)
    {
             DataTable tb = new DataTable("TemperatureWarn");
    tb.Columns.Add("TemperatureL", typeof(string)); DataGridTableStyle ts1 = new DataGridTableStyle();
    ts1.MappingName = "TemperatureWarn"; DataGridTextBoxColumn myDataCol1=new  DataGridTextBoxColumn();
    myDataCol1.HeaderText="报警温度下限";
    myDataCol1.Width =20;
    myDataCol1.MappingName="TemperatureL"; ts1.GridColumnStyles.Add(myDataCol1);

    this.dataGrid1.TableStyles.Add(ts1); this.dataGrid1.DataSource = tb;
    }