怎么用代码编写隐藏某个dockpanel控件内的所有内容
1个回答
2016-08-08 · 知道合伙人生活技巧行家
关注
展开全部
这个控件不错,可以很方便地实现如vs里那种窗口定位,浮动,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.新建你的子文档窗口类,就是新建一个windowsFORM,在窗口设计器里面随便你添上什么愿意要的控件.这将是你的程序里的子窗口,我弄了两个:一个叫FrmChild,里面放了一个dockfill的editbox,另一个叫FrmProperty,放了一个dockfill的PropertyGrid,名叫propertyGrid1,设这两个是有用的.后面说.5.打开FrmChild和FrmProperty的代码,把class的继承类由Form改为DockContent;如:publicclassFrmChild:WeifenLuo.WinFormsUI.DockContent//注意这里改了!{}6.为FrmMain加上两个私有成员:FrmChildfc;FrmPropertyfp;这两个成员用来保存待会儿新建的两个窗口的指针.7.为FrmMain的Load写些代码,如下:fc=newFrmChild();fp=newFrmProperty();fc.Show(this.dockPanel1);fp.Show(this.dockPanel1);fp.propertyGrid1.SelectedObject=fc;fp.propertyGrid1.PropertyValueChanged+=newPropertyValueChangedEventHandler(propertyGrid1_PropertyValueChanged);fc.MouseDown+=newMouseEventHandler(fc_MouseDown);fc.MouseUp+=newMouseEventHandler(fc_MouseUp);就是建立两个窗口,这两个窗口都是从DockContent中继承的,都有贴边,tab化,自动hide的能力,很有意思的.注意DockContent有新的Show()方法,可以指定要Show的DockPanel,当然要写上你准备的那个dockPanel1;两个都Show了,然后为fp的propertyGrid1指定要显示的对象,就是fc;之后再注册事件处理程序,这几句是为了可以实现属性变了窗口变,窗口变了属性变的效果,可以动态地看到这些对象的属性对于其外观和形为的影响,对于只想建个多窗口程序的人来说,Show完了就可了.8.由于上面注册的事件,下面加几个事件处理程序:privatevoidpropertyGrid1_PropertyValueChanged(objects,PropertyValueChangedEventArgse){this.dockPanel1.Invalidate();this.fc.Invalidate();//this.fc.Refresh();}privatevoidfc_MouseDown(objectsender,MouseEventArgse){this.fp.propertyGrid1.Refresh();}privatevoidfc_MouseUp(objectsender,MouseEventArgse){this.fp.propertyGrid1.Refresh();}运行吧,看看效果?你把这两个窗口放到边上,这里哪里都试试,挺有意思的.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询