none
WinForm PropertyGrid控件无法显示属性列表 RRS feed

  • 常规讨论

  • 我现在在做一个客户端的报表模板设计插件(模板设计器) ;
    背影: 在某个系统中运行这个模板设计器,并自定义模板,这个系统的主Form是一个MDI,其业务是由Child Form 来完成的,
    而显示这个模板设计器的Form并不MDI 的Child Form

    问题: 在模板设计器的工作区内有一个PropertyGrid , 当点选某一个自定义控件时,会把这个控件的属性显示出来给用户进行参数设置, 第一次显示没问题(能正常运行), 当下一次再打开这个模板设计器,点选某一个自定义控件时就不能显示控件的属性了

    自行解决:
    A.以为的PropertyGids.SelectObject 没有正确设置,调试查看后,SelectObject已获取了点选的控件对象
    B.以为是某些对象没有正确释放,发现当我close模板设计器的Form的时候(这个Form不存在其它的引用关系) ,再重新打开后,发PropertyGid.SelectObject仍然保存着上次最后一个被点选的控件的引用,这样我就在这个Form的Closing事件下主动调用Propertygrid.Dispose()的方法,对我个问题我想不明白, 再重新测一下,第一次没问题,正常显示,但在第二次打开时报错,PropertyGid.SelectObject的引用为NULL , 调试后发现PropertyGid.SelectObject不为null,传入的对象参数也不为null , 挺郁闷的!
    C.在没有头绪的情况下,只能逐个问题进行排除,我做了个简单模拟系统Form调用模板设计器的测试项目,居然发现没有任何问题,也就是说是这个系统的导致了这个问题的出现,但这个插件与系统程序没有任何的关联,有也只是引用了系统中的数据源
    (这里说明一下,在模板设计时没有与调用数据源,只在打印时才调用)

    这个问题我已没法了,我希望大家给一些帮助?


    BO Lin
    2009年3月14日 5:28