自绘控件影响程序启动速度问题

大狗狗 2011-02-20 05:45:33
环境:VS2005 C# Winform

我的程序在主窗口启动前,先要遍历网页收藏夹,创建菜单项并添入集合。等主窗口Load时,把集合里的菜单项拿出来放到主窗口的"收藏"菜单下。

我收藏夹中放的文件很多。以前这一过程需要近两秒。

为了美化界面,我通过继承ToolStripDropDown和ToolStripMenuItem重载OnPaint等函数实现了菜单自绘。

让我意想不到的问题出现了:启动主窗口前遍历收藏夹创建菜单项这个过程,原先要近两秒,现在却要近四秒!通过测试我还发现,把ToolStripMenuItem替换成我的ToolStripMenuItemEx不影响启动速度。是使用继承自ToolStripDropDown的ToolStripDropDownEx影响了启动速度!

我实在搞不明白呀,在主窗口还未启动前,仅仅是创建对象,怎么会有如此明显的速度差异?
...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
大狗狗 2011-02-20
  • 打赏
  • 举报
回复
问题原因已找到:

在ToolStripDropDownEx中,我重载了ToolStripDropDown的OnResize函数。在里面根据该下拉框里菜单项数量来决定下拉框尺寸。由于我在导入收藏夹过程中不断添加菜单项,导致ToolStripDropDownEx内容不断变化,OnResize被不断调用,消耗了很多时间。

解决办法是将计算尺寸的代码放到ToolStripDropDownEx的Opening 事件处理函数中。
moto8812 2011-02-20
  • 打赏
  • 举报
回复
拿分....呵呵

111,125

社区成员

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

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

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