创建TreeList及打开TreeListNode.Tag属性对应的窗体
创建TreeList及打开TreeListNode.Tag属性对应的窗体
本来想把标题改为"创建TreeList及TreeListNode.Tag属性高级应用",总觉得这命题太模糊。
学习内容:
1. 手工加载TreeList控件,与.Net的TreeView略有不同,看下面的代码。
2. 灵活应用TreeListNode.Tag属性。
3. 动态加载不同程序集文件(DLL), tag属性太伟大了!
4. 熟悉Assembly.GetExecutingAssembly(),LoadFile等相关方法。

打开不同模块的子窗体。

选择结点打开对应的窗体:
private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
if (e.Node.Tag is CustomFormNodeTag)
{
CustomFormNodeTag tag = e.Node.Tag as CustomFormNodeTag;
this.ShowMyForm(tag.AssemblyFile, tag.FormNamespace); //打开结点对应的窗体
this.ShowTagData(tag); //显示结点数据
}
}
程序: dev 9.2x + vs 2008

扫一扫加作者微信

本来想把标题改为"创建TreeList及TreeListNode.Tag属性高级应用",总觉得这命题太模糊。
学习内容:
1. 手工加载TreeList控件,与.Net的TreeView略有不同,看下面的代码。
2. 灵活应用TreeListNode.Tag属性。
3. 动态加载不同程序集文件(DLL), tag属性太伟大了!
4. 熟悉Assembly.GetExecutingAssembly(),LoadFile等相关方法。

打开不同模块的子窗体。

选择结点打开对应的窗体:
private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
if (e.Node.Tag is CustomFormNodeTag)
{
CustomFormNodeTag tag = e.Node.Tag as CustomFormNodeTag;
this.ShowMyForm(tag.AssemblyFile, tag.FormNamespace); //打开结点对应的窗体
this.ShowTagData(tag); //显示结点数据
}
}
/// <summary>
/// 打开结点对应的窗体
/// </summary>
private void ShowMyForm(string dllFile, string formNamespace)
{
string root = Application.StartupPath; //获取程序运行目录
Assembly asm;
//如未指定DLL文件,则获取当前执行程序EXE的程序集(ExecutingAssembly)
if (dllFile == "")
asm = Assembly.GetExecutingAssembly();
else//跟据DLL文件创建程序集
asm = Assembly.LoadFile(root + "\\" + dllFile);
//跟据命名空间动态创建窗体对象
object o = asm.CreateInstance(formNamespace);
//创建对象成功,打开窗体
if (o != null && o is Form)
(o as Form).Show();
else
MessageBox.Show("DLL文件或命名空间不正确!");
}
/// 打开结点对应的窗体
/// </summary>
private void ShowMyForm(string dllFile, string formNamespace)
{
string root = Application.StartupPath; //获取程序运行目录
Assembly asm;
//如未指定DLL文件,则获取当前执行程序EXE的程序集(ExecutingAssembly)
if (dllFile == "")
asm = Assembly.GetExecutingAssembly();
else//跟据DLL文件创建程序集
asm = Assembly.LoadFile(root + "\\" + dllFile);
//跟据命名空间动态创建窗体对象
object o = asm.CreateInstance(formNamespace);
//创建对象成功,打开窗体
if (o != null && o is Form)
(o as Form).Show();
else
MessageBox.Show("DLL文件或命名空间不正确!");
}
程序: dev 9.2x + vs 2008

扫一扫加作者微信


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网