本来像用些图像结合winform控件,实现类似vs2005的界面,不过好像记得网上有套开源组件,搜了搜,确实有,而且封装的很强,功能也很炫,就拿来用用,省了不少时间!在此多谢此组件的作者了!
下载的源码中有例子,看了看,也就有了思路了,首先我们引用该组件
using WeifenLuo.WinFormsUI.Docking;
然后新建一个窗体,本来是继承于Form的,现在将其改为继承自DockContent,他本身的基类也是Form,这样我们就实现了一个可以在父窗体中像vs2005工具箱的功能了!
示例代码如下:
首先写子窗体代码,导航栏
子窗体代码
public partial class NavTree :DockContent
{
public NavTree()
{
InitializeComponent();
treeView1.ExpandAll();
// BindTree();
}
private void expandBox_CheckedChanged(object sender, EventArgs e)
{
if (this.expandBox.Checked == true)
{
this.treeView1.ExpandAll();
this.expandBox.Text = "全部收缩";
}
else { this.treeView1.CollapseAll(); this.expandBox.Text = "全部展开"; }
}
public TreeView GetTreeView()
{
return this.treeView1;
}
}
注意是继承自dockContent!
public partial class NavTree :DockContent
{
public NavTree()
{
InitializeComponent();
treeView1.ExpandAll();
// BindTree();
}
private void expandBox_CheckedChanged(object sender, EventArgs e)
{
if (this.expandBox.Checked == true)
{
this.treeView1.ExpandAll();
this.expandBox.Text = "全部收缩";
}
else { this.treeView1.CollapseAll(); this.expandBox.Text = "全部展开"; }
}
public TreeView GetTreeView()
{
return this.treeView1;
}
}
然后是主窗体
private
void
ReturnCommand(DockContent dc, DockPanel panel)
{
dc.Show(panel, DockState.Document);
}
这里写了一个方法,因为主界面有很多如此的模块!
{
dc.Show(panel, DockState.Document);
}
然后我们就可以直接调用了
实例化子窗体类
private NavTree nt;//实例化导航栏
在相对应的方法里面调用
ReturnCommand(nt,dockpanel1);
子窗体中看到定义了一个treeview类型的属性,是为了在主界面能直接捕捉导航栏相对应的行为!比如功能导航!
效果如图