《转》WeifenLuo.WinFormsUI.DockContent 使用

WeifenLuo.WinFormsUI.DockContent这个控件不错,   可以很方便地实现如vs   2003里那种窗口定位,   浮动,   dock,   tab化等界面效果,只是具体使用方法还是不太清楚,谁知道相关的使用细节指点一下!   
    
  ××××××××××××××××××××××××××××××××××××××××××××   
  dockpanel中提供了几个可用的类,   重要的有两个,   一是DockPanel,   一是DockContent,     
  DockPanel是从panel继承出来的,   用于提供可浮动的dock的子窗口进行浮动和dock的场所,     
  DockContent是从form类中继承出来的,   用于提供可浮动的窗口基类.   就是说:   DockContent对象可以在DockPanel对象中任意贴边,   浮动,   TAB化等.     
  建立一个docpanel风格的程序的过程是:     
  1.     建立一个winform程序,   引用WinFormsUI.dll;     
  2.     程序主窗口比如说是FrmMain;   把FrmMain.IsMdiContainer   设置为true;     
  3.     在FrmMain中放一个DockPanel,   比如说名称是Panel1,   把Panel1.Dock设为Fill,   或是者是你规划的地方.     
  4.     新建你的子文档窗口类,   就是新建一个windows   FORM,   在窗口设计器里面随便你添上什么愿意要的控件.   这将是你的程序里的子窗口,     我弄了两个:     
          一个叫FrmChild,   里面放了一个dock   fill的editbox,     
          另一个叫FrmProperty,   放了一个dock   fill的PropertyGrid,   名叫propertyGrid1,     
          设这两个是有用的.   后面说.     
  5.     打开FrmChild和FrmProperty的代码,   把class的继承类由Form改为DockContent;     
  如:     
  public   class   FrmChild   :   WeifenLuo.WinFormsUI.DockContent   //   注意这里改了!     
  {     
      
  }     
    
  6.     为FrmMain加上两个私有成员:         
      FrmChild   fc;     
      FrmProperty   fp;     
  这两个成员用来保存待会儿新建的两个窗口的指针.     
  7.   为FrmMain的Load写些代码,   如下:     
    
    
                          fc   =   new   FrmChild();     
                          fp   =   new   FrmProperty();     
                          fc.Show(this.dockPanel1);     
                          fp.Show(this.dockPanel1);     
                          fp.propertyGrid1.SelectedObject   =   fc;     
                          fp.propertyGrid1.PropertyValueChanged   +=new   PropertyValueChangedEventHandler(propertyGrid1_PropertyValueChanged);     
      
                          fc.MouseDown   +=new   MouseEventHandler(fc_MouseDown);     
                          fc.MouseUp   +=new   MouseEventHandler(fc_MouseUp);     
      
  就是建立两个窗口,   这两个窗口都是从DockContent中继承的,   都有贴边,   tab化,   自动hide的能力,   很有意思的.     
  注意DockContent有新的Show()方法,   可以指定要Show的DockPanel,   当然要写上你准备的那个dockPanel1;     
  两个都Show了,   然后为fp的propertyGrid1指定要显示的对象,   就是fc;     
  之后再注册事件处理程序,   这几句是为了可以实现属性变了窗口变,   窗口变了属性变的效果,   可以动态地看到这些对象的属性对于其外观和形为的影响,   对于只想建个多窗口程序的人来说,   Show完了就可了.     
  8.   由于上面注册的事件,   下面加几个事件处理程序:     
    
    
                  private   void   propertyGrid1_PropertyValueChanged(object   s,   PropertyValueChangedEventArgs   e)     
                  {     
                              
                          this.dockPanel1.Invalidate();     
                          this.fc.Invalidate();     
                          //this.fc.Refresh();     
      
                  }     
      
                  private   void   fc_MouseDown(object   sender,   MouseEventArgs   e)     
                  {     
                          this.fp.propertyGrid1.Refresh();     
                  }     
      
                  private   void   fc_MouseUp(object   sender,   MouseEventArgs   e)     
                  {     
                          this.fp.propertyGrid1.Refresh();     
                  }     
    
  运行吧,   看看效果?   你把这两个窗口放到边上,   这里哪里都试试,   挺有意思的.     
  你也可以借这个程序试试DockContent的各个属性的效果.     
  ××××××××××××××××××××××××××××××××××××××××× 
下载地址:
http://sourceforge.net/projects/dockpanelsuite/

你可能感兴趣的:(windows,object,Class,文档,FP,WinForm)