在panel动态添加显示窗口
来源:互联网 发布:js编程confirm显示不了 编辑:程序博客网 时间:2024/04/28 12:49
在一个主窗口中,有一个panel,点击树形结构的节点,在panel中显示窗口
using System;
using System.Collections;
using System.Text;
using System.Reflection;
namespace MengYe
{
/// <summary>
/// 导入的类
/// </summary>
class InstanceFactory
{
private static Hashtable ServiceList = new Hashtable();
/// <summary>
/// 使用反射生成指定的服务对象,将调用服务类的默认构造函数。
/// </summary>
/// <param name="serviceType"></param>
/// <returns></returns>
public static Object CreateInstance(Type type)
{
if (type == null)
return null;
if (ServiceList.Contains(type)) return ServiceList[type];
ConstructorInfo constor = type.GetConstructor(Type.EmptyTypes);
Object obj = constor.Invoke(new Object[0]);
ServiceList.Add(type, obj);
return obj;
}
/// <summary>
/// 根据指定构造函数的参数数组,调用相应的构造函数生成对象。
/// </summary>
/// <param name="type">类型</param>
/// <param name="args">构造参数数组</param>
/// <returns></returns>
public static Object CreateInstance(Type type, Object[] args)
{
if (type == null) return null;
//如果构造参数列表为空或长度为0,将转为默认构造函数生成对象。
if (args == null || args.Length == 0)
{
return CreateInstance(type);
}
Type[] types = new Type[args.Length];
//获取构造函数数组的类型
for (int i = 0; i < args.Length; i++)
{
types[i] = args[i].GetType();
}
ConstructorInfo constor = type.GetConstructor(types);
if (constor != null)
{
try
{
return constor.Invoke(args);
}
catch { }
}
return null;
}
public static Object CreateInstance(String className)
{
return CreateInstance(Type.GetType(className, true));
}
public static Object CreateInstance(String className, Object[] args)
{
return CreateInstance(Type.GetType(className, true), args);
}
}
}
在主窗口中写:
/// <summary>
/// 树形节点的点击事件
/// </summary>
/// <param name="obj"></param>
/// <param name="e"></param>
private void Tv_userpower_Select(object obj, TreeViewEventArgs e)
{
TreeNode selectnode = e.Node;
if (selectnode.Name.ToString ().Trim().Length > 0)
{
string classString = selectnode.Name.ToString();
string powername = selectnode.Text.ToString();
this.lab_model.Text = "当前所在位置:" + powername;
AddPanel(classString);
}
}
/// <summary>
/// 显示窗口到选项卡中
/// </summary>
/// <param name="classString">窗口的名字</param>
private void AddPanel(string classString)
{
this.panel_form.Controls.Clear();
//传进去一个大panel用于装用户建的panel
Object o = InstanceFactory.CreateInstance(classString, new Object[1] { this.panel_form});
UserControl frm = o as UserControl;
}
要显示的窗口修改为:
public partial class Employee : UserControl
{
public Employee(Control container)
{
container.SuspendLayout();
InitializeComponent();
this.Dock = DockStyle.Fill;
container.Controls.Add(this);
container.ResumeLayout(false);
container.PerformLayout();
}
}
- 在panel动态添加显示窗口
- ext 在Window窗口中添加Panel添加htmleditor无法显示下拉字体选择
- ext中在panel中动态添加一个panel
- C# winfrom在Panel下面动态添加空间
- extjs在panel中动态添加模板并加载数据
- 如何动态的在panel中显示控件
- extjs panel动态添加button
- 在form窗口中动态添加控件
- 如何利用panel在一个窗口中实现诸多页面的显示
- 一个动态添加panel 和 删除panel的例子
- 让服务器端的Panel 在客户端动态地显示在某个控件的下面
- 在class中动态添加文字显示
- 向tableLayoutPanel中动态添加panel
- Extjs 为panel动态添加html页面
- C# Winform 左侧菜单右边显示、子窗体显示在主窗体(子窗体当控件添加到Panel)
- C# Winform 左侧菜单右边显示、子窗体显示在主窗体(子窗体当控件添加到Panel)
- 在Panel控件中添加窗体
- 在panel里添加HTML标签
- hasMap 缓存
- ListView当滚屏滚到最下边时事件监听
- 开发者应关注的Visual Studio 11新特性(组图)
- C链表倒序
- 学习HTML5不可错过的12家国外网站(组图)
- 在panel动态添加显示窗口
- xml中的类型
- iOS开发知识要点
- 异步上传图片—struts2+jQuery
- 第一,二,三,BC范式的理解
- android javascript 双向数据操作
- 我的 source Insight快捷键配置
- 一个例子学懂搜索引擎(lucene)
- 高精度幂