vb中自动调整控件的大小

前端之家收集整理的这篇文章主要介绍了vb中自动调整控件的大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

机房收费系统中有很多查询记录类的窗体用到了MSHFlexGrid控件。当没有调整该控件的大小时,查询结果可能会如图所示:


而我们需要的是:


这本来是一个很简单的调整MSHFlexGrid列宽的问题,只需要设置AllowUserResizing即可,如图:


但是我刚开始没有注意到这个属性,所以就百度自动调整MSHFlexGrid列宽的方法,需要自定义一个过程:

Public Sub AdjustColWidth(frmCur As Form,gridCur As Object,Optional bNullRow As Boolean = True,Optional dblIncWidth As Double = 0)
    Dim i,j As Integer
    Dim dblWidth As Double
    With gridCur
        For i = 0 To .Cols - 1
            dblWidth = 0
            If .ColWidth(i) <> 0 Then
                For j = 0 To .Rows - 1
                    If frmCur.TextWidth(.TextMatrix(j,i)) > dblWidth Then
                        dblWidth = frmCur.TextWidth(.TextMatrix(j,i))
                    End If
                Next
                .ColWidth(i) = dblWidth + dblIncWidth + 100
            End If
        Next
    End With
End Sub
然后再调出 :Call AdjustColWidth(frmLineHis,myFlexGrid)
这个过程的关键就是要知道form窗体有TextWidth方法 Textwidth方法则返回一个文本字符串的宽度值。

因为知道了Textwidth方法,我们就能使任何输入内容为文本字符类控件自动调节到最适合宽度,因为还有TextHeight方法,我们就能调整任何输入内容为文本字符类控件自动调节到最适合高度。我们知道label控件有AutoSize属性,而把上述代码封装起来就是输入内容为文本字符类控件的AutoSize属性

问题虽小,但是有一个从特殊到一般思考过程。任何问题都能归类,任何解决问题的方法提升后都能解决一类问题!


*自动调整MSHFlexGrid各列列宽为最合适的宽度参考文章

http://li25686686.blog.163.com/blog/static/3684873720105644729263/

猜你在找的VB相关文章