打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WeifenLuo.WinFormsUI控件使用的一个例子
WeifenLuo.WinFormsUI控件使用的一个例子
 

WeifenLuo.WinFormsUI.DockContent这个控件不错, 可以很方便地实现如vs 2005里那种窗口定位, 浮动, dock, tab化等界面效果.
下面是一个小例子:

××××××××××××××××××××××××××××××××××××××××××××
dockpanel中提供了几个可用的类, 重要的有两个, 一是DockPanel, 一是DockContent,
DockPanel是从panel继承出来的, 用于提供可浮动的dock的子窗口进行浮动和dock的场所,
DockContent是从form类中继承出来的, 用于提供可浮动的窗口基类. 就是说: DockContent对象可以在DockPanel对象中任意贴边, 浮动, TAB化等.
建立一个dockpanel风格的程序的过程是:
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,
并将 editbox,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,WeifenLuo.WinFormsUI.DockState.DockLeft);

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();

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
代码生成器开发笔记(3)-界面设计
C#窗体自动停靠—如何使用weifenluo.dll(by?Kiseigo)
利用DockPanel与C#制作窗体浮动和停靠(vs2010)
C#实现浮动和多标签窗体解决方案
DockPanel的使用
界面布局控件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服