文档库 最新最全的文档下载
当前位置:文档库 › VB中控件位置大小自动适应窗体变化的三种模式详解

VB中控件位置大小自动适应窗体变化的三种模式详解

VB中控件位置大小自动适应窗体变化的三种模式详解
VB中控件位置大小自动适应窗体变化的三种模式详解

VB中控件位置大小自动适应窗体变化的三种模式详解.doc

代码是无需更改的。

第一种。就是最实用的,就是所有控件的width和height按比例随窗体变化,位置也是当然是按比例哦。控件的字体不变。如下复制到代码:

'改比例,字体不该。最实用

Option Explicit

Private FormOldWidth As Long '保存窗体的原始宽度

Private FormOldHeight As Long '保存窗体的原始高度

Private Sub Form_Load()

Call ResizeInit(Me) '在程序装入时必须加入

End Sub

Private Sub Form_Resize()

Call ResizeForm(Me) '确保窗体改变时控件随之改变

End Sub

'在调用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

第二种,只位置就是控件的left和top随着变。其他都不变。如果变化大了不好看。如下复制:

Option Explicit

Private ObjOldWidth As Long '保存窗体的原始宽度

Private ObjOldHeight As Long '保存窗体的原始高度

Private ObjOldFont As Single '保存窗体的原始字体比

Private Sub Form_Resize()

'确保窗体改变时控件随之改变

Call ResizeForm(Me)

End Sub

Private Sub Form_Load()

'在程序装入时必须加入

Call ResizeInit(Me)

End Sub

' '在调用ResizeForm前先调用本函数

Public Sub ResizeInit(FormName As Form)

Dim Obj As Control

ObjOldWidth = FormName.ScaleWidth

ObjOldHeight = FormName.ScaleHeight

ObjOldFont = FormName.Font.Size / ObjOldHeight

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 / ObjOldWidth

'保存窗体宽度缩放比例

ScaleY = FormName.ScaleHeight / ObjOldHeight

'保存窗体高度缩放比例

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

Next i

Next Obj

End Sub

第三种,就是所有的都按比例。包括大小。字体,位置,就像放大镜的感觉。复制如下:

Option Explicit

Private ObjOldWidth As Long '保存窗体的原始宽度

Private ObjOldHeight As Long '保存窗体的原始高度

Private ObjOldFont As Single '保存窗体的原始字体比

'窗体部分

Private Sub Form_Resize()

'确保窗体改变时控件随之改变

Call ResizeForm(Me)

End Sub

Private Sub Form_Load()

'在程序装入时必须加入

Call ResizeInit(Me)

End Sub

' '在调用ResizeForm前先调用本函数

Public Sub ResizeInit(FormName As Form)

Dim Obj As Control

ObjOldWidth = FormName.ScaleWidth

ObjOldHeight = FormName.ScaleHeight

ObjOldFont = FormName.Font.Size / ObjOldHeight

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 / ObjOldWidth

'保存窗体宽度缩放比例

ScaleY = FormName.ScaleHeight / ObjOldHeight

'保存窗体高度缩放比例

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 Obj.Font.Size = ObjOldFont * FormName.ScaleHeight

Next i

Next Obj

End Sub

C#在主窗体Panel中添加新的窗体

在主窗体Panel中添加新的窗体(C#,winform开发) 本文的要写的是如何将窗体(Form)添加到panel中。 为什么要这样呢? 1)如果用tab控件,整个窗体的控件太多,不易于我们编程; 2)可以更灵活的控制窗体的布局。 我想你一定看过这样的配制信息窗体吧(迅雷的配置页面)。 在你的项目开发中,是否也希望做出做出这种效果呢?应该如何设置呢?单击窗体的左边的按钮,窗体右边的内容会根据单击的按钮变化. 开始是想到的设置思路很简单,主窗体(如上图),右边放置一个Panel控件.然后根据单击的按钮将子窗体显示在Panel控件上.在按钮的单击事件中加入下面的代码:private void button1_Click(object sender, EventArgs e) {ChildForm child = new ChildForm(); this.panel1.Controls.Add(child); child.Show(); }运行程序显示“不能将顶级控件添加到一个控件上”出现“不能将顶级控件添加到一个控件上”错误怎么处理?在代码中加入 child.TopLevel = false;OK.新问题又出现了.我们不希望子窗体的标题和边筐也显示在父窗体中,再添加如下代码.

child.FormBorderStyle = FormBorderStyle.None;现在的感觉是不是舒服多了.但是还隐藏着一个新问题.怎样动态设置子窗体的Size、Location等呢?我希望在调整父窗体大小时,Panel1中子窗体的大小也跟随动态自动调整 .需要加入下面的事件 private void panel1_Resize(object sender,System.EventArgs e) { try { this.child.ClientSize=new System.Drawing.Size(panel1.Size.Width,pa nel1.Size.Height); } catch(System.Exception Er) { MessageBox.Show(Er.ToString()); } }编译无错,执行时(Error:未将对象引用设置到对象的实例) 但连续点了4个一样的错误提示确认后,程序却可以正常执行,并且form1调整窗体大小form2也可以随之响应了。 此计不行,又生一计.我们可以把子窗体当成一个控件,设置Dock属性不就行了吗?赶快测试一下:private void button1_Click(object sender, EventArgs e) {ChildForm child = new ChildForm(); child.TopLevel = false; child.Dock = System.Windows.Forms.DockStyle.Fill; child.FormBorderStyle = FormBorderStyle.None; //child.Parent = this.panel1; this.panel1.Controls.Add(child); child.Show(); }

使用窗体控件

第2章使用窗体控件 课堂练习:为控件创建事件处理程序 5)传递给这个事件处理程序的第二个参数(e)的目的是什么? 答:参数e包含事件数据。它是一个EventArgs 对象(实际不包含事件数据的基类),或者是一个派生类(像MouseEventArgs)的实例。要查看派生类的完整列表,请在Visual Studio .NET帮助文档中使用短语“EventArgs 类”进行查找,然后点击链接转到“派生类”。 ●为Click 事件创建一个事件处理程序。 3)上面的双击动作为什么创建了一个Click 事件处理程序? 答:当在设计视图中双击一个控件时,IDE会自动为默认事件创建一个事件处理程序。课堂练习:创建和使用ToolBar控件 8)为什么不能向ToolBar 按钮添加图像呢? 答:ToolBar 控件将ImageList 控件作为图像源。使用ToolBar 控件的ImageList 属性指定Toolbar 将从哪个ImageList 控件获取图像。 13)运行应用程序。单击工具栏按钮时有事情发生吗?必须处理什么事件以响应单击ToolBar按钮? 答:ToolBar 的ButtonClick事件用来处理ToolBar按钮的单击。ToolBarButtonClickEventArgs 用来确定单击了哪个按钮。 课堂练习:在运行时添加和移除控件 ●添加新控件 6)为什么decimalCheckBox 出现在GroupBox1控件的左上角? 答:控件位置属性的默认坐标X和Y的值均为零。 课堂练习:在运行时更新菜单 ●使用另一个MainMenu 9)什么时候能在一个应用程序中使用多个MainMenu 控件? 答:在应用程序的上下文改变或者应用程序有多种状态时,使用(显示)多个MainMenu 对象会很有帮助。 ●将一个ContextMenu 分配给一个控件。 5)如何找出哪个控件与ContextMenu 有关联? 答:ContextMenu.SourceControl 属性获取显示快捷方式菜单的控件。 ●找出与ContextMenu关联的控件

向用户窗体中添加控件

若要向用户窗体中添加控件,请在“工具箱”中查找要添加的控件,将该控件拖到窗体上,然后拖动控件上的调整柄,直至控件的外边框成为所需的大小和形状。 注意如果将控件(或若干“成组”的控件)从窗体拖回到“工具箱”,将创建该控件的一个模板,该模板可被重新使用。对于实现应用程序的标准界面,这是非常有用的功能。 向窗体添加了控件之后,可用 Visual Basic 编辑器中“格式”菜单上的命令调整控件的对齐方式和间距。 上页:Excel VBA教程:向文档中添加控件下页:Excel VBA教程:应用程序对象事件 Excel VBA Excel VBA教程:应用程序对象事件Excel VBA教程:图表对象事件 Excel VBA教程:控件和对话框事件Excel VBA教程:在某一 Microsoft Office 应用程序中控制其他 Microsoft Office 应 用程序 Excel VBA教程:创建自定义对话框Excel VBA教程:新建工作簿 Excel VBA教程:创建“用户窗体”Excel VBA教程:显示自定义对话框 Excel VBA教程:获取有关 Macintosh 关键 字的帮助 Excel VBA教程:在单元格区域中循环Excel VBA教程:如何引用单元格和区域Excel VBA教程:初始化控件属性Excel VBA教程:打开工作簿Excel VBA教程:QueryTable对象事件 Excel VBA教程:引用工作表上的所有单元格Excel VBA教程:用 A1 样式记号引用单元格 和单元格区域 Excel VBA教程:用编号引用单元格Excel VBA教程:相对于其他单元格来引用单 元格 Excel VBA教程:用 Range对象引用单元格Excel VBA教程:用快捷记号引用单元格

《在窗体中添加控件》

说课教案 课题:在窗体中添加控件 教材:中等职业学校计算机技能型紧缺人才培养规划教材—— 《中文Access2003实用教程》李耀洲等主编说课教师:杭州市电子信息职业学校黄水萍 一.教材分析 1.教材的地位与作用 “在窗体中添加控件”是李耀洲等主编的中职计算机技能型紧缺人才培养规划教材《中文Access2003实用教程》第五章的核心内容。在前面的教学过程中学生已经掌握了设计、使用和编辑“表”对象,能够根据需要设计出合理的“查询”对象,本章的“窗体”对象起着联系数据库和用户的桥梁作用,因此学生能够设计出既美观又方便用户操作的窗体对象将对以后他们的数据库软件设计之路打好扎实的基础。 2.教材的处理 教材中只是一味地为了介绍某一控件而介绍它的使用方法,并没有给学生一个直观的能激发学生学习兴趣的实例来说明,对于我们中职的学生,学生认知水平较低,推理能力较弱,另外对于他们来说更重要的是培养他们的知识应用能力和技能,因此我把在窗体中添加控件自行设计了两个大项目来进行学习,第一个项目中包含“标签”、“文本框”、“绑定对象框”、“选项组”这些控件的使用方法,第二个项目主要介绍了“选项卡控件”和“命令按钮”控件,同时设计了一个综合练习,从而让学生能够对窗体中的常用控件有一个全面的认识。现在我正针对第二个项目的学习进行说课。 3.教学目标的确定 在中职教育培养目标指导下,结合教学大纲和学生的特点,我确定本内容的教学目标如下。 ①知识目标:进一步掌握标签、文本框、绑定对象框和组合框的使用方法;理解使用选项卡和命令按钮的目的;基本掌握选项卡和命令按钮的设计方法。 ②技能目标:培养学生的观察能力;培养学生自主学习、协作学习及分析问题、解决问题的能力;培养学生对知识的应用能力。 ③情感目标:由于学生众多,层次差异较大,教师培养的小助手不但可以协助教师更有

相关文档