用 System.ComponentModel.Design.DesignSurface 实现设计器,当开多设计器(Form)时,将一个设计器关掉,剩余的那个设计器中的控件不能通过拖拽鼠标更改控件尺寸,请朋友们帮忙看看,感激不尽!相关代码从这里下载:http://www.thinksea.com/designertest.rar

解决方案 »

  1.   

    建议你看看这个!
    用.NET Framework 2.0创建Form设计器
      

  2.   

    前面的Form关闭后是否释放了设计器资源?
    DesignSurface ds = new DesignSurface();
     Form1_FormClosing(object sender, FormClosingEventArgs e)
     {
    if (ds != null)
    {
        ds.Dispose();
             }
     }
      

  3.   

    回computerfox:
    您提供的资料早就看过了,没有用。
    回zzx509:
    不可以,当开两个以上设计器时,其中一个强行调用Dispose();整个应用程序会退出,而且无法捕获到异常信息(不晓得是不是出现核心异常了)
      

  4.   

    不清楚你怎么使用DesignSurface的,我用多个怎么没问题?
    每次开新窗体实际是new新的DesignSurface,在窗体关闭后Dispose自己的设计器,
    其它的窗体可以正常使用。
      

  5.   


    测试了一下:没有楼主描述的问题.
    测试环境:vs2005 + windows xp + sp2
      

  6.   

    刚看了你的代码,由于ToolBox是静态的造成的问题。要在设计窗体关闭事件中释放服务。//designerForm_FormClosing事件
    if (suf != null)
    {
    IDesignerHost idh = (IDesignerHost)suf.GetService(typeof(IDesignerHost));
    if (idh != null)
    {
    idh.RemoveService(typeof(IToolboxService));
    }
    suf.Dispose();
    }
      

  7.   

    感谢zzx509,对我来说解决了关键问题。同样的问题我在http://social.microsoft.com/Forums/zh-CN/categories提过,估计帖子不起眼,要不就是高手都潜水了,反正没有人能解决我的问题,看来还是国产的csdn.net要好些。
      

  8.   

    TO zzx509:为了表示感谢,另外开一个帖子加分请您来取分,这个帖子给分满上限了。
      

  9.   

    加分贴网址:http://topic.csdn.net/u/20100613/14/578364b3-310e-441b-8747-7b713f32817b.html