Eddie Sheffield作为微软之外的第一个发现启用Form Designer的人,确实是了不起
    几年过后的今天,已经可以找到一些关于Form Designer的资料,虽然不多也不全面,但毕竟还是有一些。我手上的资料是:
    1、《Dissecting a C# Application Inside SharpDevelop》中文版,第16章专门讲Form设计器;
   
2windowsforms.net上下载的一个小例子,显然也是从SharpDevelop得到的思路;
    3WinRes这个工具,随VS2005/.net FrameWork2.0 带的一个资源本地化的工具。可以反编译看看它的源码。

    对比123, 我发现两者虽然都实现了Form Designer,但设计思路迥然不同显然WinRes用的办法要简明。原因是.net 2.0增强了设计器的功能并简化了设计器的调用方法。由于时间限制,短期内写一个功能完善的Form设计器可能难。我想做的是做一些测试,得出基于.net 2.0写一个Form设计器的基本方法。
    我想先写一个没有任何功能但能看到设计器样式的小例子来测试。以后再慢慢增加设计的功能,比如控件的添加删除,属性的设置,保存文件等功能。
    我们的步骤如下:
    VS2005(我用的版本是RC)新建一个C# WindowsForm方案, 在工程的引用中增加System. Design,  Form1的代码中先添加

using System.ComponentModel.Design;

    然后双击Form, FormLoad事件中写以下代码:

DesignSurface surface = new DesignSurface();
surface.BeginLoad(
typeof(Form));
Control view 
= (Control)surface.View;
view.Dock 
= DockStyle.Fill;
this.Controls.Add(view);

    然后运行方案,这是最简单也没任何用处的窗体设计器了,但至少我们能调整那个被设计Form的大小:)