在C# 中如何设置 datagrid 自动列宽,就是用编程方法实现用鼠标双击的那种功能

解决方案 »

  1.   

    //.... make sure your DataGrid is using a tablestyle 
     
    dataGrid1.DataSource = _dataSet.Tables["customers"]; 
     
    DataGridTableStyle dgts = new DataGridTableStyle(); 
     
    dgts.MappingName = "customers"; 
     
    dataGrid1.TableStyles.Add(dgts); 
      
    //...... 
      
    //method to set a column with by colnumber 
     
    public void SetColWidth(DataGridTableStyle tableStyle, int colNum, int width) 
     

     
         try 
     
         { 
     
              tableStyle.GridColumnStyles[colNum].Width = width; 
     
              tableStyle.DataGrid.Refresh(); 
     
         } 
     
         catch{} //empty catch .. do nothing 
     

      
    //.... 
      
    // here is how you might call this method 
      
    private void button1_Click(object sender, System.EventArgs e) 
     

     
         DataGridTableStyle tableStyle = dataGrid1.TableStyles["customers"]; 
     
         SetColWidth(tableStyle, 1, 200); 
     

     
      

  2.   

    你得创建一个Graphics,然后把每列每行的文字计算其width,找到最小width,然后设置,比较繁琐无味的.
      

  3.   

    try
    {
    DataGridTableStyle dtstyle=new  DataGridTableStyle();
    dtstyle.MappingName=ds.Tables["department"].ToString();
    dataGrid1.TableStyles.Clear();

    DataGridColumnStyle boolCol = new DataGridTextBoxColumn();
    boolCol.MappingName="dep_number";
    boolCol.HeaderText="学号";
    boolCol.Width=200;
    dtstyle.GridColumnStyles.Add(boolCol);
    dataGrid1.TableStyles.Add(dtstyle); }