具有强大的DesignSurface的DesignTime经验(扩展)类

具有强大的DesignSurface的DesignTime经验(扩展)类

其他编程Git开源网2020-06-01 16:04:15168A+A-

具有强大的DesignSurface的DesignTime经验(扩展)类

tinydesigner.png

摘要:

这篇文章描述一个增加了设计功能(TabOrder, UndoEngine,对齐线/网格对齐)的.net 2.0 中DesignSurface扩展类。这个类托管在DLL程序集中并准备在.net解决方案中使用。

简介:

.net 2.0框架介绍DesignSurface是实现用户设计感知的类,这个类是从。Net 1.0中的DesignSurface 改善而来的。但是它任然忽略了一些对用户设计感知非常有用的设计功能。正如我现在说的:TabOrder, UndoEngine,对齐线/网格对齐。这所有的特性可能需要点努力(除了TabOrder),不过我想这可以使每个想自己感知设计的人生活更简单。

背景:

你应该熟悉基本的C#编程和使用过.net设计的一些概念(尤其是你想研究源码时)。

如何使用DesignSurfaceExt

简单的说就是:

using DesignSurfaceExt;
...
Form frm = new Form();
    IDesignSurfaceExt surface = new DesignSurfaceExt.DesignSurfaceExt();
    surface.CreateRootComponent( typeof( Form ), new Size( 400, 400 ) );
    surface.CreateControl( typeof( Button ), new Size( 100, 40 ), new Point( 10, 10 ) );
    TextBox t1 = (TextBox) surface.CreateControl( typeof( TextBox ),
        new Size( 300, 20 ), new Point( 10, 80 ) );
    t1.Text = "Hello World by DesignSurfaceExt";
    surface.GetView().Parent = frm;
frm.ShowDialog();

以上代码片段简单创建了一个新的DesignSurfaceExt实例。通过使用他的接口去创建根组件和你想要的任何.net 控件,最后将这个实例寄宿在控件中,例如一个窗体;

一个form的设计,简单的实例项目帮你演示DesignSurfaceExt的强大

明显地你可以做任何你想做的就像我在我创建的DemoConsole小form设计的程序一样!在这个小的设计程序中,你可以选择通过寄宿在4个TabPage上的4个设计页签:一个是通过使用对齐线功能使控件对齐,一个是使用“旧的”网格对齐,一个是使用没对齐线的网格自己对齐,最后一个是不使用任何对齐工具。移动已经部署的控件;剪切和复制或者剪切和粘贴从一个外观到另一个;撤销和恢复你的操作和使用TabOrder改变控件的TabIndex.

接口:

真正有用的特性是通过IDesignSurfaceExt接口提供,但是,如果你喜欢,你可以忽略它并使用DesignSurfaceExt实例本身。

public interface IDesignSurfaceExt {
 
    //- perform Cut/Copy/Paste/Delete commands
    void DoAction( string command );
 
    //- de/activate the TabOrder facility
    void SwitchTabOrder();
 
    //- select the controls alignment mode
    void UseSnapLines();
    void UseGrid ( System.Drawing.Size gridSize );
    void UseGridWithoutSnapping ( System.Drawing.Size gridSize );
    void UseNoGuides();
 
    //- method useful to create control without the ToolBox facility
    IComponent CreateRootComponent ( Type controlType, Size controlSize );
    Control CreateControl ( Type controlType, Size controlSize, Point controlLocation );
 
    //- Get the UndoEngineExtended object
    UndoEngineExt GetUndoEngineExt();
 
    //- Get the IDesignerHost of the .NET 2.0 DesignSurface
    IDesignerHost GetIDesignerHost();
 
    //- the View of the .NET 2.0 DesignSurface is just a Control
    //- you can manipulate this Control just like any other WinForms Control
    //- (you can dock it and add it to another Control just to display it)
    //- Get the View
    Control GetView();
 
}//end_interface

对齐线/网格对齐:

使用由DesignSurface主办的对齐线来对齐控件是通过设置正确的属性实现。

surface.UseSnapLines();

surface.UseSnapLines.gif

如果你更喜欢使用由DesignSurface主办的网格来对齐控件,当调用正确的属性时你必须指定网格的大小。

surface.UseGrid ( new System.Drawing.Size ( 16, 16 ) );

surface.UseGrid.gif

你也可以不通过向导对齐控件:

surface.UseGridWithoutSnapping ( new System.Drawing.Size ( 32, 32 ) );
surface.UseNoGuides();

标记命令:

什么是TabOrder?简单的说就是接口中激活和停用功能的方法。

surface.SwitchTabOrder();

surface.SwitchTabOrder.gif

The UndoEngine(撤销引擎的实现)

当前的撤销引擎,获得它通过GetUndoEngineExt()属性并调用Undo/Redo方法来使用它。

surface.GetUndoEngineExt().Undo();
surface.GetUndoEngineExt().Redo();

 

控件的Cut/Copy/Paste/Delete实现

最后是我们经常使用的cut/copy/paste and delete

surface.DoAction( "Cut" );
surface.DoAction( "Copy" );
surface.DoAction( "Paste" );
surface.DoAction( "Del" );

总结:

 DesignTime真的与RunTime是有区别的,但.NET Framework 可以让我们以相对简单的方式实现它。享用它吧,以个人之见,它是非常有用的一类,如果你也这么觉得也请告诉我.

 

原文地址:http://www.codeproject.com/Articles/24385/Have-a-Great-DesignTime-Experience-with-a-Powerful

                    http://www.codeproject.com/script/Articles/ArticleVersion.aspx?aid=60175&av=75878&display=Mobile

源码下载: http://download.csdn.net/detail/andycode/4153509


文件下载
资源名称:强大的DesignTime经验(扩展)类
点击这里复制本文地址 以上内容由Git开源网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

Git开源网_git开源代码资源网_git开源博客 © All Rights Reserved.  
文章中出现的商标及图像版权属于其合法持有人,只供传递信息之用,非商务用途。本站所上传资源,只用于交流学习所用。本站资源收集于网络以及网友投稿,其版权归原创者所有,如有侵害到你的权益,或有不妥之处,请联系我们删除,敬请谅解。Email:admin#gitoscc.com(#更换成@)
Copyright © Git开源网 All rights reserved. 黑ICP备18006154号-1 由ZBlog驱动

网站管理