我要实现的功能是: 
在客户窗体中, 用一个DateGrid来显示该客户近期订购的商品信息. 
要求实现 DataGrid 控件列宽的自动适应调整.我看了您所提供的示例代码, 照葫芦画瓢解决方案如下: 
一个cmd查出Order表中结构, 返回列名, 完成一个DataTable的构造
另一个cmd 查询该客户的交易充填到DataTable表
然后绑定, 输出.  我照搬了您给我的代码, 发现程序中有错误, 提示如下:
“System.Windows.Forms.DataGrid.TableStyles”表示“属性”,此处应为“方法”
因为我能力有限还请大侠再能帮我一把, 不胜感激.
另外还有其他的方法来绑定DataGrid吗? 有的话请不吝赐教. 
//  http://community.csdn.net/Expert/topic/4091/4091247.xml?temp=.9617578

解决方案 »

  1.   

    把圆括号改成方括号
    this.DataGrid1.TableStyles["MyTable"].GridColumnStyles[i].Width
      

  2.   

    自适应 列宽:'控制dategrid列宽度函数
        Public Sub SizeColumnsToContent(ByVal dataGrid As DataGrid, ByVal nRowsToScan As Integer)
            Dim Graphics As Graphics = dataGrid.CreateGraphics()
            Dim tableStyle As DataGridTableStyle = New DataGridTableStyle        Try            Dim dataTable As DataTable = CType(dataGrid.DataSource, DataTable)            If -1 = nRowsToScan Then                nRowsToScan = dataTable.Rows.Count            Else
                    nRowsToScan = System.Math.Min(nRowsToScan, dataTable.Rows.Count)
                End If            dataGrid.TableStyles.Clear()
                tableStyle.MappingName = dataTable.TableName
                Dim columnStyle As DataGridTextBoxColumn
                Dim iWidth As Integer
                For iCurrCol As Integer = 0 To dataTable.Columns.Count - 1
                    Dim dataColumn As DataColumn = dataTable.Columns(iCurrCol)
                    columnStyle = New DataGridTextBoxColumn
                    columnStyle.TextBox.Enabled = True
                    columnStyle.HeaderText = dataColumn.ColumnName
                    columnStyle.MappingName = dataColumn.ColumnName
                    iWidth = CInt(Graphics.MeasureString(columnStyle.HeaderText, dataGrid.Font).Width)
                    Dim dataRow As DataRow
                    For iRow As Integer = 0 To nRowsToScan - 1
                        dataRow = dataTable.Rows(iRow)
                        If dataRow(dataColumn.ColumnName) <> Nothing Then
                            Dim iColWidth As Integer = CInt(Graphics.MeasureString(dataRow.ItemArray(iCurrCol).ToString(), dataGrid.Font).Width)
                            Dim iColHight As Integer = CInt(Graphics.MeasureString(dataRow.ItemArray(iCurrCol).ToString(), dataGrid.Font).Height)
                            iWidth = CInt(System.Math.Max(iWidth, iColWidth))
                        End If
                    Next
                    columnStyle.Width = iWidth + 10
                    tableStyle.GridColumnStyles.Add(columnStyle)
                Next
                dataGrid.TableStyles.Add(tableStyle)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                Graphics.Dispose()
            End Try
        End Sub
      

  3.   

    楼上都说了,HOHO……有什么不明白,可以发站内短信给我