转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
根据表格内容,自动调整VB.NET中Datagrid控件单元格宽度         ★★★★

根据表格内容,自动调整VB.NET中Datagrid控件单元格宽度

作者:闵涛 文章来源:闵涛的学习笔记 点击数:969 更新时间:2009/4/23 19:00:27

       用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

效果如图示:
1窗体导入时


2单击[调整第一列宽]后


3单击[调整所有列宽]后


  


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]VB.NET中关于DataGrid颜色的自定义。
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台