[url=http://blog.csdn.net/lxwde/archive/2006/08/08/1038435.aspx]http://blog.csdn.net/lxwde/archive/2006/08/08/1038435.aspx[/url]


[img]http://www.codeproject.com/csharp/SharpFormEditorDemo/SharpFormEditorDemo.jpg[/img]
SharpFormEditor是一个轻量级的窗体编辑器开源软件,采用C#语言编写。它的演示程序获得CodeProject上2006年3月份的C#类的Prize Winner。SharpFormEditor的核心思想是通过实现用于控件选择和拖拽的矩形橡皮筋(rectangle tracker)和用于显示拖拽效果的透明窗体来实现运行时刻的窗体编辑。它的主要功能是对Windows控件实施添加、删除、拷贝、属性编辑、无限制的Undo/Redo等等。
 
与SharpDevelop等基于.NET的其它窗体编辑器的实现方法不同,SharpFormEditor没有采用由.NET 框架所提供的DesignerSurface解决方案。在.NET框架中,用于窗体编辑的一系列操作都被封装成service的形式由框架来实现,通常的做法是通过定制这些service来实现自己的窗体编辑器。但是这种定制并非简单到几句代码就能实现的程度,而且DesignerSurface的实现方法与我们通常所习惯的UI编程相去甚远,大家可以参考SharpDevelop的实现。

SharpFormEditor所采用的方法简单直接,很容易在非.NET平台上利用其它框架(比如MFC或WTL)来实现,所需要做的只是实现一个矩形橡皮筋(rectangle tracker)和一个“真正”透明的上层窗体。另外SharpFormEditor所采用的方法可以使开发者对于所编辑的实体有完全的控制权,这种方法可以很自然的应用于图片(Image)、图形(Shape/Diagram)、报告(Report)编辑。在后续版本中,可能会加入这些功能。

关于SharpFormEditor的具体实现原理请参考我写在CodeProject上的文章(我会尽快更新这篇文章以及所附代码):

[url= http://www.codeproject.com/csharp/SharpFormEditorDemo.asp] http://www.codeproject.com/csharp/SharpFormEditorDemo.asp[/url]
 
SharpFormEditor在CodeProject上的示例代码没有license限制,新的版本将采用GNU General Public License发布在google code-project hosting上(sourceforge实在是太难用了):
 
[url= http://code.google.com/p/sharpformeditor/] http://code.google.com/p/sharpformeditor/[/url]


[url=http://blog.csdn.net/lxwde/archive/2006/08/08/1038435.aspx]http://blog.csdn.net/lxwde/archive/2006/08/08/1038435.aspx[/url]