首页 >> VB.Net >> 正文
vb窗体中控件自动随窗体变化大小-VB.NET
  来源:Dotnet频道 作者:采集 时间:2008-3-10  

源代码下载:http://blog.blogchina.com/upload/2004-12-07/20041207155830520878.rar

在开发中,往往开发人员需要控制控件大小适应窗口的大小,使得软件在不同的分辨率下也显得比例协调.
那么,怎么才能让窗体中控件自动随窗体变化大小呢?

我觉得有一种原始方法很有用,不让窗体可以最大化:比如飞天餐饮软件.......

当然这种方法是绕道而行.开发出来的软件肯定好看不了.
好了,让我们来引出下面这个很有用,比较专业的Model吧.
--------------------------------------------------------------------------------
Option Explicit
Private FormOldWidth As Long
'保存窗体的原始宽度
Private FormOldHeight As Long
'保存窗体的原始高度

'在调用ResizeForm前先调用本函数
Public Sub ResizeInit(FormName As Form)
    Dim Obj As Control
    FormOldWidth = FormName.ScaleWidth
    FormOldHeight = FormName.ScaleHeight
    On Error Resume Next
    For Each Obj In FormName
    Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
    Next Obj
    On Error GoTo 0
End Sub

'按比例改变表单内各元件的大小,在调用ReSizeForm前先调用ReSizeInit函数
Public Sub ResizeForm(FormName As Form)
    Dim Pos(4) As Double
    Dim i As Long, TempPos As Long, StartPos As Long
    Dim Obj As Control
    Dim ScaleX As Double, ScaleY As Double
   
    ScaleX = FormName.ScaleWidth / FormOldWidth
    '保存窗体宽度缩放比例
    ScaleY = FormName.ScaleHeight / FormOldHeight
    '保存窗体高度缩放比例
    On Error Resume Next
    For Each Obj In FormName
    StartPos = 1
    For i = 0 To 4
        '读取控件的原始位置与大小
        TempPos = InStr(StartPos, Obj.Tag, " ", vbTextCompare)
        If TempPos > 0 Then
        Pos(i) = Mid(Obj.Tag, StartPos, TempPos - StartPos)
        StartPos = TempPos + 1
        Else
        Pos(i) = 0
        End If
        '根据控件的原始位置及窗体改变大小的比例对控件重新定位与改变大小
        Obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
    Next i
    Next Obj
    On Error GoTo 0
End Sub

'开发软件时候,把这个modal装入程序中.然后加入如下代码:
Private Sub Form_Load()
Call ResizeInit(Me) '在程序装入时必须加入
End Sub

Private Sub Form_Resize()
Call ResizeForm(Me) '确保窗体改变时控件随之改变
End Sub
--------------------------------------------------------------------------------

ok,这样你的软件就可以窗体中控件自动随窗体变化大小!

你的软件至少从外观上从此变得不再那么难看了.而且大分辨率下也显得比例协调了.


上一篇:如何通过VB获取网卡地址-VB.NET
下一篇:运用VB.net创建Web服务访问程序-VB.NET

本篇新闻:vb窗体中控件自动随窗体变化大小-VB.NET

相关新闻
相关评论
 
评论表单加载中...
 
VB.Net文章

 在Visual C++应

 编辑:admin

 时间:2008-3-10


   编程入门网-介绍.NET中的委派(Delegates)之三
   编程入门网-介绍.NET中的委派(Delegates)之二
   编程入门网-介绍.NET中的委派(Delegates)之一
   编程入门网-用Visual C#实现文件下载功能
   编程入门网-用C#写简单的CGI程式
最新文章
   编程入门网-介绍.NET中的委派(Delegates)之三
   编程入门网-介绍.NET中的委派(Delegates)之二
   编程入门网-介绍.NET中的委派(Delegates)之一
   编程入门网-用Visual C#实现文件下载功能
   编程入门网-用C#写简单的CGI程式
总站搜索
搜索
 
热门文章
   oracle数据库文件中的导入\导出
   用Oracle10g列值掩码技术隐藏敏感数据
   VB程序中用ADO对象动态创建数据库和表-VB.NET
   用VB6写简单程序 让电骡自动关机-VB.NET
   使用.NET2.0编写COM组件供VB调用-VB.NET
   VB.NET:键盘控制焦点移动-VB.NET
   用VB.NET绘制GDI图形-VB.NET
   vb.net中应用 ArrayList 实例-VB.NET
 
推荐文章
ASP.NET中的状态管理-ASP.NET
VC、IE、ASP环境下打印、预备的完美解决方案
oracle数据库文件中的导入\导出
VB.NET中快速访问注册表技巧-VB.NET
在vb中实现超连接的方法!和直接发邮件-VB.NET
用VB做realplayer播放列表-VB.NET
在VB.NET中如何实现和利用SortedLists-VB.NET
利用VB.NET Stopwatch对象记录时间-VB.NET
成都古羌科技有限公司版权所有: Copyright@2007-2010 ,ALL Rights Reserved 蜀ICP备07017240号