Do While (i < numRows) size = g.MeasureString(dataGrid1(i, col).ToString, dataGrid1.Font, 500, sf) If (size.Width > width) Then width = size.Width End If i = (i + 1) Loop
g.Dispose() dataGrid1.TableStyles("customers").GridColumnStyles(col).Width = CType(width, Integer)
End Sub
现在就可以表格内容来定义整张表所有列的宽度了。如下:Public Sub AutoSizeTable() Dim numCols As Integer numCols = CType(dataGrid1.DataSource, DataTable).Columns.Count Dim i As Integer i = 0 Do While (i < numCols) AutoSizeCol(i) i = (i + 1) LoopEnd Sub
只要使用以上两个Sub过程就可以达到你想要的结果了!
一个完整的实例如下:Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim connString As String connString = "Provider=Microsoft.JET.OLEDB.4.0;data source=northwind.mdb" Dim sqlString As String sqlString = "SELECT * FROM customers" Dim dataAdapter As OleDbDataAdapter dataAdapter = Nothing Dim _dataSet As DataSet _dataSet = Nothing
Try
Dim connection As OleDbConnection connection = New OleDbConnection(connString)
dataAdapter = New OleDbDataAdapter(sqlString, connection)
_dataSet = New DataSet dataAdapter.Fill(_dataSet, "customers") connection.Close() Catch ex As ExceptionMessageBox.Show("出错!") Me.Close() ReturnEnd Try Dim tableStyle As DataGridTableStyle tableStyle = New DataGridTableStyle tableStyle.MappingName = "customers"
dataGrid1.TableStyles.Clear() dataGrid1.TableStyles.Add(tableStyle) dataGrid1.DataSource = _dataSet.Tables("customers")End Sub
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click AutoSizeTable()End Sub
Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click AutoSizeCol(1)End Sub
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1202666
转载于:https://www.cnblogs.com/antony1029/archive/2006/09/13/503669.html
相关资源:vb.net DataGridView控件用法合集