热门文章
阿标在线 动力3.62HTML生成3.62网站文件说明
动力3.62整合动网7.0 SP2插
MDAC2.8 下载!
动力3.62版 防止垃圾留言
动力3.6全方位改动方法
让3.62不同频道实现不同风
把3.62首页登陆为横向代码
动易3.6首页随机FLASH修改
362首页和文章频道页图文幻
个性化修改3.6宝典
3.62轻易实现网摘功能
如何正确统计中文字数?
弹出JAVASCRIPT语法错误对
后台使“网站顶部LOGO地址
最新图片文章横向移动的修
html 生成艺术字
3.6 Sp2 Logo和Banner及广
日期值的计算
汉字转拼音
首页“图片更新”图片滚动
简体中文转换为繁体中文的
如何在css中定义链接的下划
根据表格内容,自动调整VB.NET中Datagrid控件单元格宽度
[ 录入:阿标 | 点击数: | 更新时间:2005-3-12 9:24:00]
用Datagrid控件显示表格数据,当表格内容过多时,Datagrid控件单元格宽度并不足以用来完全显示表格中的数据内容。而只有自己每次去拉动分界线,来进行调整。当出现表格字段比较多时,这样做就显得很麻烦。
以下是用程序根据表格内容来自动调整Datagrid控件单元格宽度。
先定义一个Sub过程AutoSizeCol,用来调整Datagrid中的列宽。
如下:
Public Sub AutoSizeCol(ByVal col As Integer)
Dim width As Single
width = 0
Dim numRows As Integer
numRows = CType(dataGrid1.DataSource, DataTable).Rows.Count
Dim g As Graphics
g = Graphics.FromHwnd(dataGrid1.Handle)
Dim sf As StringFormat
sf = New StringFormat(StringFormat.GenericTypographic)
Dim size As SizeF
Dim i As Integer
i = 0
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)
Loop
End 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 Exception
MessageBox.Show("出错!")
Me.Close()
Return
End 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