,怎么解决切换窗体时闪烁的有关问题
发布时间:2011-06-23 16:01:13 文章来源:www.iduyao.cn 采编人员:星星草
请教高手,如何解决切换窗体时闪烁的问题
有两个窗体A和B,两个窗口在同一个位置,两个窗口上都有20多个PICTUREBOX控件,我将DoubleBuffer,ControlStyles.AllPaintingInWmPaint都设为了TRUE,可在切换窗口的时候还是会出现闪烁。感觉很明显,在A切换到B的时候甚至可以看到一半B的控件有一小半A的控件。我目前的做法是切换的时候将两个窗口的TOPMOST轮流设为TURE.再去SHOW窗口,还并没有将另外一个窗口HIDE.因为我试了HIDE的话闪烁得更加历害。。。。请教高手帮忙。。。。
------解决方案--------------------
双倍缓冲:
Private Sub 双倍缓冲()
SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.UserPaint, True)
UpdateStyles()
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = False
End Sub
在LOAD 事件中调用:双倍缓冲()
------解决方案--------------------
使用API函数试试!
LockWindowUpdate
VB声明
Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock As Long) As Long
说明
锁定指定窗口,禁止它更新。同时只能有一个窗口处于锁定状态
返回值
Long,非零表示成功,零表示失败(比如另外已有一个窗口锁定)
参数表
参数 类型及说明
hwndLock Long,欲锁定窗口的句柄。如设为零,则对窗口解锁
注解
windows会跟踪锁定窗口的区域,并会在窗口解锁后重画它们。可用GetDCEx获得一个特殊的设备场景,令其与锁定窗口协同工作,从而描绘一个加锁的窗口。这种技术的一个应用场合是创建跟踪矩形(比如用于改变窗口大小的矩形)
Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock As Int32) As Int32
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
LockWindowUpdate(Me.Handle.ToInt32)
End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
LockWindowUpdate(0)
End Sub
装载完成后解除窗体锁定,重新绘制窗体!
------解决方案--------------------
可以考虑把多张图合并为一张。
------解决方案--------------------
不一定要把所有图片合并到一起,可以分组合并,把其中的某几张合并为一张
------解决方案--------------------
估计很难,lz再多试试。。
------解决方案--------------------
PICTUREBOX多就耗费的资源多,于是就感觉到慢(闪).
建议:
1:少用些PICTUREBOX
2:改用别的容器来显示图片.
------解决方案--------------------
帮顶
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于VB.net中的验证控件
小弟正在开发一个C/S结构程序,有几个界面有较多的textbox,是关于用户数据输入的,现在想做验证,听说有验证控...
-
多表查询问题
我有三个表,一个表为基本表,一个是代码表,一个是出差表
表一 编号,姓名 ,职别
001 李三 101
...
-
DATAGRIDVIEW无法删除未提交的新行?
再DATAGRIDVIEW录入时,想删除最后自动新增的一行,提示无法删除未提交的新行
Private Sub Dat...
-
迷茫了几天,求各位高手指教一下!下面是我的代码!
<!--#include file="webconfig.asp"-->
<%
Dim SortID
SortID=Trim(FLib.SafeSql(R...
-
vb.net 断开和连接网络连接 修改代码
在vb.net中实现断开和连接网络连接的代码,我在网上找了一段代码
Option Explicit On
'首...
-
DataGridView直接导出EXCEL
如何直接读取DataGridView中的数据,并导出成Excel可以直接读取的文件
记住,我不要通过DataTable。
希...
-
求教:如何在vb.net下做一些好看的界面,整一些好看的效果,改变控件,让控件变得好看点?
有没有点例子?有没有点直接可以做控件的软件?
---...
-
在VB中,对SQL数据库进行增删改语句怎么写呢?
小弟做课程设计,遇到了一点小麻烦,卡在了这里,不知道在VB中怎么写对SQL数据库的增删改...
-
文本框中的数字精确到小数点后两位
请问如何让文本框输入数字后精确到小数点后两位,如:当输入112时,显示为112.00
------解决方案--...
-
VB.NET2008如何利用SendMessage修改按钮的Text?
为了测试 Windows API ,试图点Button用SendMessage修改该按钮的Text,竟然没成功,请教...