winform问题:在窗体上添加大量控件时,会造成在窗体切换时强烈的刷新感,怎么解决?

fansenwei 2004-05-02 08:49:10
在窗体上放置100个picture控件,窗体切换时,重绘感觉很明显,这种情况在vb里面是很不明显的,请问有办法解决么?
...全文
525 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyincs 2004-05-07
  • 打赏
  • 举报
回复
upup

JohnHelf 2004-05-07
  • 打赏
  • 举报
回复
不好意思,我是口不择言。
其实就是你说的意思啦
fansenwei 2004-05-07
  • 打赏
  • 举报
回复
现在改成直接画个大bitmap了,我要捕捉每个小bitmap的鼠标事件啊,显示文字,tooltip之类的,事件接收只能是绘制容器了,楼上说的“在bitmap的事件里写”不明白指的什么!
JohnHelf 2004-05-06
  • 打赏
  • 举报
回复
为什么一定要放100个pictureBox呢?
把所有picture先做成一个大的bitmap,然后再显示出来不就行了?
至于实现控件点击事件,在bitmap的事件里写,根据x,y位置判断就可以知道到底哪个部分被按下了,结合改变bitmap就可以模拟出按钮按下等效果.

还有,实在不行,在winform里做个web页也是种办法吧?
johnczy 2004-05-06
  • 打赏
  • 举报
回复
“这样做麻烦的就是鼠标事件捕捉了”:到底是什么问题呢?
liutaoxwl 2004-05-05
  • 打赏
  • 举报
回复
我的一个同事遇到过这个问题,他解决的办法是把透明度设置成0,然后再设置成100,具体步骤不清楚,大家看看通过透明度能不能解决问题
fansenwei 2004-05-05
  • 打赏
  • 举报
回复
我试了直接画图像双缓冲,效果还不错,没有闪烁
这样做麻烦的就是鼠标事件捕捉了,再试~
fansenwei 2004-05-05
  • 打赏
  • 举报
回复
楼上说的不中,在.net下Grid控件也会闪烁的,呵呵
ejiue 2004-05-05
  • 打赏
  • 举报
回复
那你可以用MsFlexGrid控件,每个cell画一个图象。
VB的书上一般有讲到MsFlexGrid这个用途的。
fansenwei 2004-05-05
  • 打赏
  • 举报
回复
我试试绘制吧,等待结果!
fansenwei 2004-05-05
  • 打赏
  • 举报
回复
我做实时房态的显示,所有相关操作可以通过鼠标操作完成,每个房态显示包括一个图像一个Label.
mikespook 2004-05-05
  • 打赏
  • 举报
回复
不是太明白,你要100个PICTURE干什么~~~
说说你的目的,说不定可以有替换的方法~~~~
magicworld 2004-05-05
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/3033/3033736.xml?temp=.3871118


此贴有分相送

c#+sql的项目

作个资产管理系统的web输入部分, 

基本目标,

从web页面取得数据,然后保存到sql数据库里面

现在基本做好框架了, 

但是还有几个问题很难解决,希望找个高手

来指导一下

本人,一个月前才开始c# 学习

比较笨,希望高手不吝赐教,做好以后高分相送(准备送个几百分吧,呵呵)

qq34214135

基本全天都在,

验证csdn
dongyp511 2004-05-05
  • 打赏
  • 举报
回复
ding...偶也碰到这个问题的。
johnczy 2004-05-05
  • 打赏
  • 举报
回复
画是没有问题的,使用双缓冲,在ONPAINT 里头用GRAPHIC画,自己定义画在什么位
置,大小及STYLE。
如果你的图像都没有重迭,事件处理也不成问题。直接在FORM上加鼠标事件处理,
从鼠标点击的位置来判断那个图像被选中。
fansenwei 2004-05-04
  • 打赏
  • 举报
回复
楼上说的不错,我说的是vb6
不只是显示图像还要响应鼠标事件,还要根据鼠标事件改变图像显示内容,如果画的话,容易控制么?
fansenwei 2004-05-04
  • 打赏
  • 举报
回复
楼上说的不错,我说的是vb6
不只是显示图像还要响应鼠标事件,还要根据鼠标事件改变图像显示内容,如果画的话,容易控制么?
johnczy 2004-05-04
  • 打赏
  • 举报
回复
1. 关于双缓冲: 对不起,双缓冲确实不行,原因是它只对控件本身的重画起作用。

2。 SuispandLayout 不行
The SuspendLayout and ResumeLayout methods are used in tandem to suppress
multiple events while you adjust multiple attributes of the control. For
example, you would typically call the SuspendLayout method, then set the
, , , or properties of the control, and then call the ResumeLayout method
to allow the changes to take effect.
它并不能解决repaint 的问题。

3。 我个人认为你的问题并不好解决。这是WinForm 的运行性能问题。

4。不过一般来说,你的窗体上不会添加很大量控件。我设计的窗体从来不会超过20个
控件。比如加100个PictureBox,是不是光用这些PictureBox 显示图像呢,能否
自己直接在Form上画这100个图像呢。

5. “这种情况在vb里面是很不明显的”: 你指的是VB6 还是VB.Net? VB.Net 应该
是一样的效果。

6。介绍一篇WinForm基础文http://windowsforms.net/articles/windowsformspainting.
aspx
希望对大伙有点帮助!
fan27 2004-05-03
  • 打赏
  • 举报
回复
谁有这方面的资料?
lihao9806 2004-05-03
  • 打赏
  • 举报
回复
我觉得都会有这种问题的~~~~~~
加载更多回复(33)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧