posts - 54, comments - 54, trackbacks - 5, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

这套代码我主要是想实现工具面板类似vs.net的效果.

我是从代码的

SharpStudioMain.cs中的Main函数启动的,

然后调用WorkBenchSingleton.cs中的InitialWorkBench();

然后调用Mdi窗体中的InitialWorkSpace();

第一次启动没有问题,但是当我调整窗体大小,或者窗体最大化时,系统就提示"集合在窗体变化时发生了修改".请教一下这是什么问题造成的啊.

程序中用到的集合主要是在WorkBench.cs类中,定义了

listpads,listmenus,listworkbenches等等.

源代码路径:http://www.cnblogs.com/Files/bobzhangfw/WorkBench.rar

 

Feedback

#1楼    回复  引用  查看    

2007-02-05 12:42 by Wu.Country@侠缘      
当你在一个依靠集合的数量在进行索引时,你又修改了这个集合的内容,就会出现这个问题。
例如:
foreach(object i_o in m_arrayList){
//
arrayList.Add();//一定会出现你说的这个问题。
}
上面上一个明显的例子,很多情况是在你不知道什么时候修改了某个集合,而同时,这个集合又正地索引(例如在多线程中)。

#2楼 [楼主]   回复  引用  查看    

2007-02-05 13:33 by 张冰      
@Wu.Country@侠缘
谢谢!再请问一下,我把程序中的事件和委托都去掉后,系统就不报错了.可能是我在委托事件实现时重新改写了集合.

#3楼 [楼主]   回复  引用  查看    

2007-02-08 02:55 by 张冰      
终于彻底把问题找到了.
WeifenLuo.WinFormsUI这套控件库的托管必须建立在标准的窗体对象上,在类A里面创建WeifenLuo.WinFormsUI.Docking.DockPanel对象,如果该类A中有委托事件,当委托事件结束后,内存回收管理器可能也自动把WeifenLuo.WinFormsUI.Docking对象分配的内存回收了.
当我在workbench窗体增加一个DockPanel时,该对象与委托就互不相干了.
但是如果workbench.text值为空的,DockPanle.IsParentValable方法会出错.
所以当要在窗体加入DockPanel时,必须给text属性赋值.

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-02-08 00:02 编辑过
 
另存  打印
最新IT新闻:
· 阿里巴巴确立未来十年战略规划 修改自身定位
· 微软高管:Wii用户最终会成为Xbox 360用户
· 遵守YouTube案裁定 谷歌将陷入隐私指控深渊
· iPhone入华在即 中国手机产业生存面临考验
· 阿里巴巴集团再向淘宝注资20亿元