vb6.0怎么实现窗体由下自上vb.net 淡入淡出?

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
VB6.0自学教程
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口vb中如何实现窗体重新加载_百度知道
vb中如何实现窗体重新加载
就是直接再加载一遍本窗体用form_load用不起,说未定义函数过程
我有更好的答案
VB6.0窗体重新加载可使用Load语句、Show方法等实现。1)Show 方法,用以显示 MDIForm 或 Form 对象。&&&&&&&&窗体名.Show2)Load 语句,把窗体或控件加载到内存中。&&&&&&&&Load.窗体名3)Visual Basic 窗体经历的状态通常地,Visual Basic 窗体在整个存活期中有四种状态:创建,但不加载。加载,但不显示。显示。内存和资源完全收回。在一定环境下,窗体可有第五种状态:当其中有一个控件仍被引用时,窗体处于卸载和未引用状态。4)在其他程序运行时,当代码涉及到完全卸载窗体上的控件事件或属性,被卸载窗体会被加载到内存。Private&Sub&Command1_Click()&&&&Form1.Text1&=&&Abc&End&Sub上述代码执行,Form1就被加载于内存。
用Load函数呢?要不 你就重新实例化当前的窗体,然后show一下假如你的窗体名为Form1那么就有 Dim frm1 as Form1frm1.Show()试试
本回答被网友采纳
如果你的程序只有一个窗体,也就是本窗体本身是主窗体,那么可以尝试show方法。在之前甚至可以加refresh方法刷新窗口:窗口名称.refresh,如form1.refresh窗口名称.show如果你的程序有2个或以上的窗口,而要重新加载的窗口又不是主窗口。那为了获得更好的重新加载效果,可以在其他窗口中放置语句,将窗口先卸载,再加载。如在from1的你需要的地方中放置语句:unload form2load form2form2.show
哈哈就用load就可以了,后边加窗口名,form_load事件,是当前窗口的事件
如果你要显示与已有窗体(如:Form1)一模一样的窗体,这样做:Private Sub Command1_Click()
Dim nForm As New Form1
nForm.ShowEnd Sub
其他2条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。VB编程技巧280例(附源代码光盘1张)(源江科技)【电子书籍下载 epub txt pdf doc 】
书籍作者:
书籍出版:
上海科学普及出版社
书籍页数:
书籍ISBN:
书籍人气:
推荐指数:
VB编程技巧280例(附源代码光盘1张)《VB编程技巧280例》是学习VB编程的一本很好的教材,它侧重于用实例讲解如何编写一些高级的VB程序,如:&用VB6.0实现动态增减控件&、&用VB制作即时动态按钮&等,特别对高级编程人员进一步提高自己的能力有很大的好处,同时由于书中详细介绍了实现某个功能的方法,本书附带的光盘中含有全部的源代码,即使是初学者也能得到很大的收获,使自己的编程水平一日千里。
《VB编程技巧280例》共分11章,&第1章API&讲解了十几个如何调用API函数实现自己理想的功能的例子,相信对您大有益处,&第2章控制&讲解了VB编程中几十个控制技巧方面的例子,&第3章数据库&讲解VB编程中应用数据库的难点,&第4章文件&讲解VB编程中创建资源文件的方法、如何应用INI文件、文本的加密与解密等高级编程难点,&第5章窗体&讲解VB编程中怎样优化窗体,怎样使您设计的界面更优美,体现您编程的水平,&第6章图象&,处理图象是任何一个编程人员的难点,阅读本章后您一定会发现,处理图象原来可以变得这么轻松,&第7章多媒体&,怎样播放AVI文件,怎样控制PC喇叭等等,快阅读本章吧,&第8章网络&讲解网络编程的例子,如&获得用户网络登录名&等,&第9章控件&讲解VB控件的一些高级应用,&第10章字符串&讲解字符串的一些高级的处理方法,&第11章其他&讲解一些其他VB编程方面的技巧。第1章 API
1. VB调用API函数使窗口保持在最上层
2. 打开/关闭光驱门
3. VB中利用API函数实现特殊窗体的两种方法
4. 让您的程序不在任务栏中显示
5. 在VB中用API实现多媒体
6. 在VB中控制&CTRL+DEL+ALT&键
7. 使用KB-EVENT函数模拟键盘操作
8. SHELL语句用法
9. 把图标放在WINDOWS 95的系统托盘中
10. 利用API可以直接拨号
11. 利用API函数实现无TITTLEBAR窗体的移动
12. 在VB中调用API函数动态改变及恢复屏幕设置
13. 如何用API检查任务栏中有多少种输入法
14. 如何隐藏鼠标指针
15. 有关TRAY系统盒的VB API函数
16. 如何为您的应用程序设置热键
17. 调用API函数设计ABOUT窗口
18. 判断一个32位程序是否结束
19. 用VB编程让文本滚动更平滑
20. 在VB中&遥控&鼠标
21. 调用版本信息框
第2章 控制
22. VB6.0中注册控件三法
23. VB6.0编程中如何获取硬盘分区信息
24. VB中WINSOCK控制的UDP协议的使用
25. VISUAL BASIC中字符淡出淡入的实现
26. 捕捉MOUSEEXIT事件
27. 查找月份的最后一天
28. 访问INI
29. 关闭正在运行的程序
30. 获得、设置鼠标双击间隔时间
31. 获取当前系统平台
32. 记载WINDOWS使用的时间
33. 监视程序的运行情况
34. 交换鼠标按钮
35. 交换鼠标左右键
36. 取得控件绝对TOP值
37. 让TIMER控件每5分钟触发一次事件
38. 如何过滤键盘录入
39. 如何获取硬盘卷标、序列号和文件系统类型
40. 如何让程序拥有多个热键
41. 如何实现在桌面上添加程序的快捷方式
21. 如何使用VB编写自动反安装的程序
43. 如何在VB中控制MODEM行为
44. 如何在VB中判断WINDOWS 9X的运行模式
45. 鼠标取词
46. 用VB编程检测当前电池使用情况
47. 用VB函数轻松访问系统注册表
48. 用VB实现拖放功能
49. 怎样捕捉窗体的鼠标
50. 怎样关闭一个正在运行的程序
51. 怎样限制鼠标移动
52. 用VB设计一个定时闹钟程序
53. 用VB6.0编程监控CPU的资源状况
第3章数据库
54. VB6.0中通过MSCHART控件调用数据库
55. 在VB中存取数据库中的图片
56. DATA控件使用有密码的ACCESS数据库
57. DBF文件转为MDB文件的方法
58. VB处理数据库时求数据表记录总数的最佳方法
59. VB数据库记录查询四法
60. VB应用程序访问SQL SERVER方法探讨
61. 把资料输往EXCEL来列印
62. 断开所有的数据连接
63. 利用VB使ACCESS数据库在网络使用中保持同步返回
64. 列出MDB中所有TABLE的名称
65. 如何将表中的数据导出到电子表格中
64. 如何将EXCEL的文件导入ACCESS文件
67. 如何判断数据中是否存在某一表或查询
68. 用CELL组件显示ACCESS数据库的图片对象
69. 用代码创建数据库、表、字段
70. 用VB创建电子表格
71. 在VB中引用. DBF及索引文件
72. 在ACCESS数据库中实现密码管理
73. 巧用VB6.0的DATAGRID实现通用电子表格
74. VB6.0使用ADO对象连接数据库
第4章 文件
75. 自动出现动画、进度和确认的文件操作
76. TXT文件的读取
77. VB中调用WORD拼写检查
78. 多重文档界面设计方法
79. 恢复回收站中的文件(在VB中恢复删除的文件)
80. 获取文件或文件夹属性
81. 快速读取TEXTBOX第N行的资料
82. 利用EM_LINESCROLL信息控制TEXTBOX的卷动
83. 满屏播放AVI文件
84. 取得WAV文件信息
85. 如何在VB中实现目录遍历
86. 如何知道硬盘是使用那一种文件系统(FAT32,FAT16)
87. 删除整个目录
88. 使用历史文件记录
89. 文本的加密与解密
90. 显示盘中所有的目录
91. 从公共对话框控件中提取多个文件名称
92. 取得临时文件名
93. 用VB实现文件查找功能
94. 用VB开发应用程序如何使用INI文件
95. VB6.0中创建资源文件的方法
96. VB中利用WINRAR进行文件压缩
97. 利用INI文件给程序创建动态菜单
第5章 窗体
98. VB实现窗口的弹出式菜单
99. 用VB6.0实现动态增减控件
100. 用VB做个漂亮的进度条
101. 制作渐变的窗口背景色
102. VB实现按钮浮动效果
103. VB中实现带预览的对话框
104. VB中阴影字体的实现
105. 把窗体卸载干净
106. 创建透明窗体
107. 创建无ICON的窗口
108. 改变安装向导的背景色
109. 将程序从任务列表中隐藏
110. 利用VB的图片框实现屏幕的滚动
111. 制作半透明窗体和形状不规则的窗体
112. 让窗体处于最前面
113. 如何创建椭圆形的窗体
114. 如何将鼠标显示成动画鼠标
115. 闪烁的LABEL
116. 实现鼠标移到窗口上时变大,移出窗体时变小(如《东方快车》)
117. 使窗体右上角的X按钮失效
118. 使指定窗口总处于其他窗口之上
119. 拖动无标题窗口
120. 旋转字体
121. 用VB实现&ICQ&式的启动欢迎画面
122. 用VB实现&百叶窗&的图形特效
123. 用VB实现全屏幕图形界面及动态功能提示
124. 用VISUALBASIC编写托盘程序
125. 在程序中调用关闭WINDOWS对话框
126. 在任务栏中显示无边框窗体的图标
127. 在系统菜单上添加自定义菜单项
128. 利用VB产生屏幕变暗的效果
129. 窗体背景花纹
130. 用VB制作TORPMOST类型窗口
131. 在系统菜单上添加自定义菜单坝
132. 利用VB控制窗口显示风格
133. 使用VB设计具有动感的命令图标栏
134. 用VISUAIBASIC设计更好的用户界面
135. VB中实现宙体自动隐藏
136. 用VB制作即时动态按钮
137. 保持窗口的比例不变
第6章 图像
138. VB实现图形动画的三种方法
139. VB中不规则图形热点的实现
140. 如何将整个画面暗下来,如同关机前一般
141. 获取桌面图像
142. 利用VB捕捉并保存屏幕图像
143. 三维字的实现
144. 实现图像切换效果
145. 用VB编程实现OICQ头像DIY
146. 取得PICONREBOX内BITMAP图的各个BYTE
147. 利用PICTURECLIP进行图像局部处理
148. 如何将图片并排并且占满整个窗体
149. 如何在VB中实现绘图区的大十字光标
150. 在VB6.0中实现图像的变换
第7章 多媒体
151. 用VB制作屏幕保护程序
152. VB多媒体程序设计
153. VB中播放WAV文件
154. VISUALBASIC动画编程技术
155. VISUALBASIC影音控制
156. 播放AVL
157. 播放MP3文件
158. 播放资源文件中的声音
159. 创建动态图标
160. 电影结束画面的卷动效果
161. 二进制操作截取VCD片断
162. 控制PC喇叭
163. 利用VB测声卡
164. 使机箱内的小喇叭发出不同的声音
165. 用API播放. WAV声音文件
166. 用VB编写FLASH动画播放器
167. 在VB 6.0中播放GIF动画
168. 利用VB制作MP3播放列表
169. 调用声音文件的VB函数
第8章 网络
170. 打开浏览器并进入指定网址
171. 程序中如何启动默认的拨号连接
172. 电话拨号
173. 断开拨号网络的连接
174. 发送电子邮件附件
175. 获得用户网络登录名
176. 利用MSCOMM32控件判断MODEM状态
177. 利用VB访问INTERNET
178. 如何从INTERNET上取回某一个网页的内容
179. 如何利用WINSOCK控件编写自己的INTERNET程序
180. 使用VB获得一页HTML代码
181. 使用VB收发电子邮件
182. 使用超链接和发送E-MAIL
183. 显示计算机的名称
184. 用VB实现客户一服务器(TCP/IP)编程实例
185. 用VB写一个定时PING某IP的程序
186. 用WINSOCK控件发送E-MAIL
187. 用WINSOCK实现点对点通信
188. 邮件检查程序
189. 在VB程序中怎样挂断拨号网络
190. 在VB中利用UDP协议编写聊天程序
191. 在VB中实现文件上传
192. 在VB中用OUTLOOK发电子邮件
193. 在桌面上建立一个INTERNET快捷键
194. VISUAI BASIC 6.0中发送邮件的新方法
195. 建立拨号联接
196. WINSOCK断开导致客户端问题
197. 用WINSOCK控件下载文件
198. 判断是否已经建立DIAI UP连接
199. 用VB设计自己的WEB浏览器
200. 由VISUAL BASIC 5. 0调用EXPLORER的方法
201. 利用IE控件访问INTERNET
202. 如何通过VB获取网卡地址
第9章 控件
203. REGSVR32. EXE注册控件的具体用法
204. 防止将重复项目添加到列表框控件中
205. 在程序中注册和注销OCX控件
206. 对LISTVIEW中的列排序
207. 改进VB的驱动器列表框
208. 给TREEVIEW控件添加弹式菜单
209. 如何取得RICHTEXTBOX控件中光标所在行的值
210. 如何设定MSGBOX在若干时间之后若无回应则自动关闭
211. 如何用VB 6.0写COM组件
212. 显示和隐藏鼠标
213. 运用MSCHART,生成统计图形
214. 向文本框等控件的系统右键菜单里追加自己定义的菜单
215. 把VB标准的工具栏变成平面式
216. 防止文本控件中的部分滚动
217. 在运行时刻创建可改变尺寸的控件
218. TEXBOX实现打印机效果
219. 改变COMBOBOX中LISTBOX的宽度
220. VB中如何消除MSCHART的闪烁现象
221. 将KEYBOARD FOCUS移到下一个控制项
222. 运行时改变控件大小的两种方法
223. 运用ACTIVEX组件技术创建通用的查询控件
224. VB6.0动态加载ACTIVEX控件漫谈
225. 在VB6.0中利用DATAGRID控件控制数据的输入和修改
226. 功能强大的增强列表框--VB6.0控件LISTVIEW使用指南
第10章 字符串
227. 字符串中文的问题
228. VB中对字符串的处理及其扩展
229. VB中如何实现文本查找功能
230. 将阿拉伯数字转成中文字的程式
231. 将包含有NULL结尾的字符串转换为VB字符串
232. 切分字符串
233. 清除字符串中指定的字符
234. 如何取得汉字的区位码
235. 如何取得计算机的所有字型
236. 字符串中包含双引号
第11章 其他
237. KB-EVENT函数的使用
238. SHELL&WAIT的程序怎么写
239. VB6.0内置的内码转换功能
240. VB编程如何控制I/O口
241. 做成一个时间限制的测试版
242. VB编写键盘拦截程序
243. VB剪贴板的用法
244. VB修改注册表一特例
245. VB中感叹号&!&与圆点&. &的用法差异
246. VB中获取逻辑磁盘的信息
247. VB中如何实现注册表的读写
248. 不在任务栏中显示,只能在CTRL+ALT+DEL对话框中显示或者干脆什么也不显示数
249. 从全路径名中提取文件名
250. 打开一个超链接
251. 当前系统目录
252. 得到磁盘上剩余空间的值
253. 调用&添加打印机&对话框
254. 获得WINDOWS启动方式
255. 获得IE的版本号
256. 获得当前用户名
257. 获得分区信息并判断是否有CD
258. 检测系统驱动器
259. 检查电子邮件地址输入的有效性
260. 检查硬盘空间
261. 增加快捷方式到启动组
262. 拷贝磁盘
263. 快速查找或替换文本中的字符
264. 如何调用控制面板中的应用程序
265. 如何取得中英文混合字符串的长度
266. 如何使您的程序同文件扩展名建立关联
267. 如何正确使用VB6.0访问ACCESS 2000数据库
268. 使程序不在&CTRL+ALT+DEL&弹出的对话框内
269. 使用WORD的&艺术字&工具
270. 使用未安装的字体
271. 突破SENDKEYS的限制
272. 隐藏和显示任务栏
273. 用RND()函数加密
274. 获得系统中鼠标的键数
375. 轻松实现&撤消/恢复&功能
276. 在VB程序中处理随机事件
277. 怎样使用VB6.0实现打字效果
278. 如何实现VB程序登录密码加密
279. 浅谈用VB6.0编写BO程序
280. 用VISUALBASIC编制定时存盘程序
281. 如何让用户自由输入方程式并计算其结果
282. 在VISUALBASIC中显示动态运行进度
283. 在VB6.0中实现大面积不规则区域的填充
284. 用VB6.0编写电脑抽奖程序C#winform,对窗体实现了淡入效果,但是淡出效果怎么实现?_百度知道
C#winform,对窗体实现了淡入效果,但是淡出效果怎么实现?
淡入效果:如窗口
button1单击light l1=new light();
子窗体light的timer控件
if(this.opacity!=1)
this.opacity +=0.1;
子窗体light的load事件中写
this.opacity=0;
timer1.start();
这样就实现了淡入效果。
那么我在父窗体中添...
我有更好的答案
//覆写窗体关闭事件
protected override void OnClosing(CancelEventArgs e)
e.Cancel =
timer2.Start();
private void timer2_Tick(object sender, EventArgs e)
this.Opacity -= 0.1;
}已测试,Timer是另加的。(已在你的另一个帖子里回答了,点击关闭的时候实现窗体淡出。)
采纳率:26%
来自团队:
light窗体 private void timer1_Tick(object sender, EventArgs e)
if (this.Opacity != 1)
this.Opacity += 0.1;
this.timer1.Stop();
private void light_Load(object sender, EventArgs e)
this.Opacity = 0;
this.timer1.Start();
private void timer2_Tick(object sender, EventArgs e)
if (this.Opacity!=0)
this.Opacity -= 0.1;
this.Close();
public void close()
this.timer2.Start();
private void button1_Click(object sender, EventArgs e)
ff=new light();
ff.Show();
private void button2_Click(object sender, EventArgs e)
ff.close();
参考资料:
public class MyAnimate
public const Int32 AW_HOR_POSITIVE = 0x; // 从左到右打开窗口
public const Int32 AW_HOR_NEGATIVE = 0x; // 从右到左打开窗口
public const Int32 AW_VER_POSITIVE = 0x; // 从上到下打开窗口
public const Int32 AW_VER_NEGATIVE = 0x; // 从下到上打开窗口
public const Int32 AW_CENTER = 0x; //若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展。
public const Int32 AW_HIDE = 0x; //隐藏窗口,缺省则显示窗口。
public const Int32 AW_ACTIVATE = 0x; //激活窗口。在使用了AW_HIDE标志后不要使用这个标志。
public const Int32 AW_SLIDE = 0x; //使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略。
public const Int32 AW_BLEND = 0x; //使用淡出效果。只有当hWnd为顶层窗口的时候才可以使用此标志。
[DllImport(&user32.dll&, CharSet = CharSet.Auto)]
public static extern bool AnimateWindow(
IntPtr hwnd, // handle to window
int dwTime, // duration of animation
int dwFlags // animation type
}以下是调用:private void MainWindow_Load(object sender, EventArgs e)
MyAnimate.AnimateWindow(this.Handle, 1000, MyAnimate.AW_BLEND);
private void MainWindow_FormClosing(object sender, FormClosingEventArgs e)
MyAnimate.AnimateWindow(this.Handle, 1000, MyAnimate.AW_SLIDE|MyAnimate.AW_HIDE|MyAnimate.AW_BLEND);
你的方法真复杂,比别人的看起来难很多。我的窗口是无边框的,窗口都是添加按钮来进行关闭的。呵呵。父窗体的button1打开子窗体light,淡入效果父窗体的button2关闭子窗体light,淡出效果
我这个是调用win api 来实现的。。。效果最好这和有无边框没有任何关系。。。调用设置在子窗体中就没有任何问题
那这个按钮事件在哪里呢?总要有按钮来打开和关闭啊?我是新手,嘿嘿!
button1单击light l1=new light();拿你这个做例子。。。在light窗口中定义load方法和closing方法。。。其他的调用都是一样。。。你直接用button1来触发light1 窗口的show事件就行啦
为您推荐:
其他类似问题
您可能关注的内容
winform的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。vb6.0&窗体自适应不同分辨率(适用于sstab控件、toolbar、statusbar等)
网上找到的代码都不能很好的适用于sstab控件,为此进行了适当改进。新建用户控件,将如下代码粘贴到用户控件代码页:
Option Explicit
Private Declare Function LockWindowUpdate Lib "user32" (ByVal
hwndLock As Long) As Long
' if True, also fonts are resized
'是否缩放字体
Public ResizeFont As Boolean
' if True, form's height/width ratio is preserved
'是否保持比例
Public KeepRatio As Boolean
'默认缩放倍数(根据屏幕分辨率)
Private ScaleWidths As Single
Private ScaleHeights As Single
Private borderwidth As Long
Private borderheight As Long
'记录原始控件位置尺寸
Private Type TcontrolInfo
& & isActive As Boolean
'true表示sstab中控件为激活(显示)状态,根据left属性是否为负判断
& & ctrl &
& & Left &
& & Width &
& & As Single
& & Height
& & FontSize
& &As Single
' this array holds the original position
' and size of all controls on parent form
'保存父窗体内所有控件的初始位置与大小
Dim Controls() As TcontrolInfo
' a reference to the parent form
'父窗体事件
Private WithEvents ParentForm As Form
' parent form's size at load time
'载入时父窗体的大小
Private ParentWidth As Single
Private ParentHeight As Single
' ratio of original height/width
'初始高宽比例
Private HeightWidthRatio As Single
'记录原始控件位置尺寸
Private pos() As String
Private WithEvents ParentSStab As SSTab
Private SSTab1 As SSTab
'sstab原始tabheight(如果存在)
Private sstab_tab_height As Integer
'记录statusbar的各窗格初始宽度,便于缩放
Private panwidth() As String
Private pannum As Integer
Private isfirstload As Boolean &
& &'记录是否在窗体第一次加载时执行缩放
Private isfirstclick() As Boolean &
'记录sstab的相应tab是否第一次被点击
'保存sstab的初始上下边距,由于存在toolbar和statusbar,所以要保持上下边距。假设toolbar位于顶部,而statusbar位于窗体底部。
Private distance As Single
Private distop As Single
Private Sub ParentForm_Load()
& & ' the ParentWidth
variable works as a flag
& & ParentWidth = 0
& & ' save original
& & '保存初始比例
& & HeightWidthRatio =
ParentForm.Height / ParentForm.Width
& & '适应屏幕分辨率
& & Dim ResWidth As
& & Dim ResHeight As
& & ResWidth = Screen.Width
\ Screen.TwipsPerPixelX
& & ResHeight =
Screen.Height \ Screen.TwipsPerPixelY
& & ScaleWidths =
CSng(ResWidth / 1440) & &
'假设当前程序开发设计环境屏幕分辨率为
& & ScaleHeights =
CSng(ResHeight / 900)
& & borderwidth =
Form2.Width - Form2.ScaleWidth &
&'小窗体左右边框宽度,与borderstyle有关(必须与form1一致)
& & borderheight =
Form2.Height - Form2.ScaleHeight &
'小窗体上下边框高度(含标题栏)
& & ParentWidth =
ParentForm.Width - borderwidth &
&'获得原始scalewidth,由于scalewidth会随屏幕分辨率调整(不能超过屏幕分辨率),因此这里根据width反算得到(适用于scalemode=twip,建议)。
& & ParentHeight =
ParentForm.Height - borderheight
& & '让tabheight也跟着缩放
& & Dim i As Integer
& & Set SSTab1 =
ParentForm.SSTab1
& & sstab_tab_height =
SSTab1.TabHeight
isfirstclick(SSTab1.Tabs - 1)
& & For i = 0 To SSTab1.Tabs
& isfirstclick(i) = True
& & Next i
& & isfirstclick(SSTab1.Tab)
& & pannum =
ParentForm.StatusBar1.Panels.Count
panwidth(pannum)
& & For i = 1 To
& panwidth(i) =
ParentForm.StatusBar1.Panels(i).Width
& & Next i
& & distance =
ParentForm.StatusBar1.Top - ParentForm.Toolbar1.Height
& & distop = SSTab1.Top -
ParentForm.Toolbar1.Height
& & isfirstload = True
Private Sub UserControl_ReadProperties(PropBag As
PropertyBag)
& & ResizeFont =
PropBag.ReadProperty("ResizeFont", False)
& & KeepRatio =
PropBag.ReadProperty("KeepRatio", False)
& & If Ambient.UserMode =
False Then Exit Sub
& & ' store a reference to
the parent form and
& & ' start receiving
& & Set ParentForm =
Private Sub UserControl_WriteProperties(PropBag As
PropertyBag)
& & PropBag.WriteProperty
"ResizeFont", ResizeFont, False
& & PropBag.WriteProperty
"KeepRatio", KeepRatio, False
Private Sub UserControl_Resize()
& & ' refuse to resize
& & '限制大小
& & Size 420, 420
' trap the parent form's Resize event
' this include the very first resize event
' that occurs soon after form's load
Private Sub ParentForm_Resize()
& & Dim i As Integer
& & LockWindowUpdate
ParentForm.hWnd
& & If isfirstload = True
& Rebuild & &
& & '记录控件初值
& If ScaleWidths && 1 Or ScaleHeights
&& 1 Then Refresh
& isfirstload = False
& For i = 0 To SSTab1.Tabs - 1 &
& &'在窗体不缩放时,sstab内控件缩放模式打开
isfirstclick(i) = True
& & End If
& & LockWindowUpdate 0
Private Sub ParentSStab_Click(PreviousTab As Integer)
& & Rebuildpage
isfirstclick(SSTab1.Tab) = True Then &
& '保证在窗体不缩放时,sstab内控件仅缩放一次
& LockWindowUpdate ParentForm.hWnd
& LockWindowUpdate 0
& isfirstclick(SSTab1.Tab) = False
&'关闭当前tab页中控件缩放模式
& & End If
' save size and position of all controls on parent form
' you should manually invoke this method each time you
' add a new control to the form
' (through Load method of a control array)
Sub Rebuild()
& & ' rebuild the internal
& & Dim i As Integer, ctrl
As Control
& & Dim pos() As
& & ' this is necessary for
controls that don't support
& & ' all properties (e.g.
Timer controls)
& & On Error Resume
& & If Ambient.UserMode =
False Then Exit Sub
& & ' save a reference to
the parent form
& & ' and its initial
&Set ParentForm = UserControl.Parent
& & Set ParentSStab =
Parent.SSTab1
& & ' read the position of
all controls on the parent form
Controls(ParentForm.Controls.Count - 1) As TcontrolInfo
& & For i = 0 To
ParentForm.Controls.Count
& With Controls(i)
& & & Set .ctrl
= ParentForm.Controls(i)
& & & pos =
Split(.ctrl.Tag, " ")
& & & .Left =
& & & .Top =
& & & .Width =
& & & .Height =
& & & .FontSize
= .ctrl.Font.Size
& & & If TypeOf
.ctrl Is Line Then & &
& &'line控件只能利用x1判断
& & If .ctrl.X1 &= 0
& .isActive = True
& .isActive = False
& & End If
& & & Else
& & If .ctrl.Left &= 0
& .isActive = True
& .isActive = False
& & End If
& End With
Sub Rebuildpage()
& & ' rebuild the internal
& & Dim i As Integer, ctrl
As Control
& & ' this is necessary for
controls that don't support
& & ' all properties (e.g.
Timer controls)
& & On Error Resume
& & If Ambient.UserMode =
False Then Exit Sub
& & ' save a reference to
the parent form
& & ' and its initial
& & ' read the position of
all controls on the parent form
& & For i = 0 To
ParentForm.Controls.Count
& With Controls(i)
& & & If TypeOf
.ctrl Is Line Then
& & If .ctrl.X1 &= 0
& .isActive = True
& .isActive = False
& & End If
& & & Else
& & If .ctrl.Left &= 0
& .isActive = True
& .isActive = False
& & End If
& End With
' update size and position of controls on parent form
'更新父窗体内控件的大小与位置
Sub Refresh()
& & Dim i As Integer, j As
Integer, ctrl As Control
& & Dim widthFactor As
Single, heightFactor As Single
& & Dim minFactor As Single
& '比例因子
& & ' inhibits recursive
calls if KeepRatio = True
& & Static executing As
& & If executing Then Exit
& & '如果不是运行时,则退出
& & If Ambient.UserMode =
False Then Exit Sub
& & If KeepRatio Then
& executing = True
& ' we must keep original ratio
& If ParentForm.WindowState && 2 And
ParentForm.WindowState && 1 Then ParentForm.Height =
HeightWidthRatio * ParentForm.Width
& executing = False
& & End If
& & ' this is necessary for
controls that don't support
& & ' all properties (e.g.
Timer controls)
& & '错误处理,不能调整所有控件的大小,比如
Timer 控件
& & On Error Resume
& & widthFactor =
(ParentForm.Width - borderwidth) / ParentWidth
& & heightFactor =
(ParentForm.Height - borderheight) / ParentHeight
& & ' take the lesser of the
& & If widthFactor &
heightFactor Then
& minFactor = widthFactor
& minFactor = heightFactor
& & End If
& & ' this is a regular
& MsgBox ParentForm.Command3.Left
& & For i = 0 To
UBound(Controls)
& With Controls(i)
& & & ' the
change of font must occur *before* the
& & & ' resizing
to account for companion scrollbar
& & & ' of
listbox and other similar controls
ResizeFont Then
& & .ctrl.Font.Size = .FontSize *
& & & ' move and
resize the controls - we can't use a
& & & ' Move
method because some controls do not
& & & ' support
the change of all the four properties
& & & ' (eg.
Height with comboboxes)
'.ctrl.Left = .Left * widthFactor
& & & '.ctrl.Top
= .Top * heightFactor
'.ctrl.Width = .Width * widthFactor
'.ctrl.Height = .Height * heightFactor
InStr(UCase(.ctrl.Name), UCase("sstab")) && 0 Then
.ctrl.TabHeight = sstab_tab_height * heightFactor
& & & If TypeOf
.ctrl Is StatusBar Then MsgBox .isActive
.isActive = True Then
& & If TypeOf .ctrl Is SSTab
& .ctrl.TabHeight = sstab_tab_height *
heightFactor
&If InStr(UCase(.ctrl.Name), UCase("combo"))
& & ElseIf TypeOf .ctrl Is
ComboBox Then
& .ctrl.Left = .Left * widthFactor
& .ctrl.Top = .Top * heightFactor
& .ctrl.Width = .Width * widthFactor
& & ElseIf TypeOf .ctrl Is Line
& .ctrl.X1 = .Left * widthFactor
& .ctrl.Y1 = .Top * heightFactor
& .ctrl.X2 = .Width * widthFactor
& .ctrl.Y2 = .Height * heightFactor
& & ElseIf TypeOf .ctrl Is
Toolbar Or .ctrl.Name = "Toolbar1" Then '对于老版本的控件不支持typeof
& &.ctrl.Left = .Left *
widthFactor
& &.ctrl.Top = .Top *
heightFactor
& & ElseIf TypeOf .ctrl Is
StatusBar Or .ctrl.Name = "StatusBar1" Then
'对于老版本的控件不支持typeof
& .ctrl.Height = .Height * heightFactor
& For j = 1 To pannum
.ctrl.Panels(j).Width = panwidth(j) * widthFactor
& & ElseIf TypeOf .ctrl Is
ProgressBar Or .ctrl.Name = "ProgressBar1" Then
'对于老版本的控件不支持typeof
& .ctrl.Move .Left * widthFactor, .Top *
heightFactor, .Width * widthFactor, .Height * heightFactor
& & End If
& End With
& & Dim tempfactor As
& & tempfactor =
(ParentForm.StatusBar1.Top - ParentForm.Toolbar1.Height) /
Split(ParentForm.SSTab1.Tag, " ")
& & ParentForm.SSTab1.Move
pos(0) * widthFactor, distop * tempfactor +
ParentForm.Toolbar1.Height, pos(2) * widthFactor, pos(3) *
tempfactor
ParentForm.ProgressBar1 & &
&'其实少量的特殊控件也可以写在这里
ParentForm.StatusBar1.Panels(3).Left
& .Top = 0
& .Width =
ParentForm.StatusBar1.Panels(3).Width
& .Height = ParentForm.StatusBar1.Height
& & End With
窗体form1中添加代码:
Private Sub Form_Initialize()
& & InitCommonControls
& & Dim i As Integer
& & Dim default_tab As
& & default_tab =
SSTab1.Tab
& & Dim contr As
& & For i = 1 To
SSTab1.Tabs
& SSTab1.Tab = i - 1
& For Each contr In Me
& & & If TypeOf
contr Is Line Then
& & If contr.X1 &= 0 Then
contr.Tag = CStr(contr.X1) + " " + CStr(contr.Y1) + " " +
CStr(contr.X2) + " " + CStr(contr.Y2)
& & & Else
& & If contr.Left &= 0 Then
contr.Tag = CStr(contr.Left) + " " + CStr(contr.Top) + " " +
CStr(contr.Width) + " " + CStr(contr.Height)
& & Next i
& & SSTab1.Tab =
default_tab
& & '适应屏幕分辨率
& & Dim borderwidth As
& & Dim borderheight As
& & Dim ResWidth As
& & Dim ResHeight As
& & '根据屏幕分辨率调整窗体
& & Dim ScaleWidths As
& & Dim ScaleHeights As
& & ResWidth = Screen.Width
\ Screen.TwipsPerPixelX
& & ResHeight =
Screen.Height \ Screen.TwipsPerPixelY
& & ScaleWidths =
CSng(ResWidth / 1440)
& & ScaleHeights =
CSng(ResHeight / 900)
& & borderwidth =
Form2.Width - Form2.ScaleWidth &
&'小窗体左右边框宽度,与borderstyle有关(必须与form1一致)
& & borderheight =
Form2.Height - Form2.ScaleHeight &
'小窗体上下边框高度(含标题栏)
& & If ScaleWidths &&
1 Or ScaleHeights && 1 Then Me.Move Me.Left, Me.Top,
Me.ScaleWidth * ScaleWidths + borderwidth, Me.ScaleHeight *
ScaleHeights + borderheight
Private Sub Form_Load()
& & ProgressBar1.Value =
& & Dim lrn As Long
SetParent(ProgressBar1.hWnd, StatusBar1.hWnd)
& & ProgressBar1.Left =
StatusBar1.Panels(3).Left
& & ProgressBar1.Top =
& & ProgressBar1.Width =
StatusBar1.Panels(3).Width
& & ProgressBar1.Height =
StatusBar1.Height
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As
启动窗体form1中添加toolbar、satusbar、sstab、progressbar控件,名称默认。在sstab1中添加控件若干。这里允许combobox、textbox、checkbox、option、commanon、line、picturebox等控件。增减一些不支持left等属性的特殊控件需要在用户控件代码和主窗体代码中做一些修改。
此外,还需要添加一个窗体form2,保证form2与form1的borderstyle属性一致,且窗口尽可能小。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 vb6.0 关闭窗体 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信