C#编程,用用户控件做的,调试的时候出来的是这样的,怎么实现的??

发布网友

我来回答

4个回答

热心网友

可以说很简单,最主要的是反射。

根据反射dll遍历里面的类,找到继承自control或者usercontrol的类,后台实例化(估计要求必须有默认构造函数),添加到测试窗体里面,然后属性框的对象也指定为此控件。

重点是要熟悉反射。

    public partial class Form1 : Form
    {
        ListBox lst;
        string dllName = @"D:\ClassLibrary1.dll";
        public Form1()
        {
            InitializeComponent();
            lst = new ListBox();
            lst.Height = 100;
            lst.Dock = DockStyle.Top;
            lst.SelectedIndexChanged += this.lst_SelChanged;
            this.Controls.Add(lst);
            Assembly ass = Assembly.LoadFile(dllName);
            //遍历dll里面的类,筛选出UserControl
            foreach (Type t in ass.GetTypes().
                Where(t => t.IsSubclassOf(typeof(UserControl))))
                lst.Items.Add(t.ToString());
        }

        //选择事件
        private void lst_SelChanged(object sender, EventArgs e)
        {
            Assembly ass = Assembly.LoadFile(dllName);
            string ts = lst.SelectedItem.ToString();
            Type t = ass.GetType(ts);
            //创建实例
            UserControl uc = Activator.CreateInstance(t) as UserControl;
            Controls.Add(uc); //添加
            uc.Dock = DockStyle.Bottom;
        }
    }

热心网友

这个在bin文件夹里面有个dll文件,你打开VS,新建项目,在左边有控件,把这个dll直接拖到控件的地方,就好了

热心网友

抱歉,我没接触过c#

热心网友

里面用了树形控件

热心网友

可以说很简单,最主要的是反射。

根据反射dll遍历里面的类,找到继承自control或者usercontrol的类,后台实例化(估计要求必须有默认构造函数),添加到测试窗体里面,然后属性框的对象也指定为此控件。

重点是要熟悉反射。

    public partial class Form1 : Form
    {
        ListBox lst;
        string dllName = @"D:\ClassLibrary1.dll";
        public Form1()
        {
            InitializeComponent();
            lst = new ListBox();
            lst.Height = 100;
            lst.Dock = DockStyle.Top;
            lst.SelectedIndexChanged += this.lst_SelChanged;
            this.Controls.Add(lst);
            Assembly ass = Assembly.LoadFile(dllName);
            //遍历dll里面的类,筛选出UserControl
            foreach (Type t in ass.GetTypes().
                Where(t => t.IsSubclassOf(typeof(UserControl))))
                lst.Items.Add(t.ToString());
        }

        //选择事件
        private void lst_SelChanged(object sender, EventArgs e)
        {
            Assembly ass = Assembly.LoadFile(dllName);
            string ts = lst.SelectedItem.ToString();
            Type t = ass.GetType(ts);
            //创建实例
            UserControl uc = Activator.CreateInstance(t) as UserControl;
            Controls.Add(uc); //添加
            uc.Dock = DockStyle.Bottom;
        }
    }

热心网友

这个在bin文件夹里面有个dll文件,你打开VS,新建项目,在左边有控件,把这个dll直接拖到控件的地方,就好了

热心网友

可以说很简单,最主要的是反射。

根据反射dll遍历里面的类,找到继承自control或者usercontrol的类,后台实例化(估计要求必须有默认构造函数),添加到测试窗体里面,然后属性框的对象也指定为此控件。

重点是要熟悉反射。

    public partial class Form1 : Form
    {
        ListBox lst;
        string dllName = @"D:\ClassLibrary1.dll";
        public Form1()
        {
            InitializeComponent();
            lst = new ListBox();
            lst.Height = 100;
            lst.Dock = DockStyle.Top;
            lst.SelectedIndexChanged += this.lst_SelChanged;
            this.Controls.Add(lst);
            Assembly ass = Assembly.LoadFile(dllName);
            //遍历dll里面的类,筛选出UserControl
            foreach (Type t in ass.GetTypes().
                Where(t => t.IsSubclassOf(typeof(UserControl))))
                lst.Items.Add(t.ToString());
        }

        //选择事件
        private void lst_SelChanged(object sender, EventArgs e)
        {
            Assembly ass = Assembly.LoadFile(dllName);
            string ts = lst.SelectedItem.ToString();
            Type t = ass.GetType(ts);
            //创建实例
            UserControl uc = Activator.CreateInstance(t) as UserControl;
            Controls.Add(uc); //添加
            uc.Dock = DockStyle.Bottom;
        }
    }

热心网友

抱歉,我没接触过c#

热心网友

里面用了树形控件

热心网友

这个在bin文件夹里面有个dll文件,你打开VS,新建项目,在左边有控件,把这个dll直接拖到控件的地方,就好了

热心网友

抱歉,我没接触过c#

热心网友

里面用了树形控件

热心网友

可以说很简单,最主要的是反射。

根据反射dll遍历里面的类,找到继承自control或者usercontrol的类,后台实例化(估计要求必须有默认构造函数),添加到测试窗体里面,然后属性框的对象也指定为此控件。

重点是要熟悉反射。

    public partial class Form1 : Form
    {
        ListBox lst;
        string dllName = @"D:\ClassLibrary1.dll";
        public Form1()
        {
            InitializeComponent();
            lst = new ListBox();
            lst.Height = 100;
            lst.Dock = DockStyle.Top;
            lst.SelectedIndexChanged += this.lst_SelChanged;
            this.Controls.Add(lst);
            Assembly ass = Assembly.LoadFile(dllName);
            //遍历dll里面的类,筛选出UserControl
            foreach (Type t in ass.GetTypes().
                Where(t => t.IsSubclassOf(typeof(UserControl))))
                lst.Items.Add(t.ToString());
        }

        //选择事件
        private void lst_SelChanged(object sender, EventArgs e)
        {
            Assembly ass = Assembly.LoadFile(dllName);
            string ts = lst.SelectedItem.ToString();
            Type t = ass.GetType(ts);
            //创建实例
            UserControl uc = Activator.CreateInstance(t) as UserControl;
            Controls.Add(uc); //添加
            uc.Dock = DockStyle.Bottom;
        }
    }

热心网友

这个在bin文件夹里面有个dll文件,你打开VS,新建项目,在左边有控件,把这个dll直接拖到控件的地方,就好了

热心网友

抱歉,我没接触过c#

热心网友

里面用了树形控件

热心网友

可以说很简单,最主要的是反射。

根据反射dll遍历里面的类,找到继承自control或者usercontrol的类,后台实例化(估计要求必须有默认构造函数),添加到测试窗体里面,然后属性框的对象也指定为此控件。

重点是要熟悉反射。

    public partial class Form1 : Form
    {
        ListBox lst;
        string dllName = @"D:\ClassLibrary1.dll";
        public Form1()
        {
            InitializeComponent();
            lst = new ListBox();
            lst.Height = 100;
            lst.Dock = DockStyle.Top;
            lst.SelectedIndexChanged += this.lst_SelChanged;
            this.Controls.Add(lst);
            Assembly ass = Assembly.LoadFile(dllName);
            //遍历dll里面的类,筛选出UserControl
            foreach (Type t in ass.GetTypes().
                Where(t => t.IsSubclassOf(typeof(UserControl))))
                lst.Items.Add(t.ToString());
        }

        //选择事件
        private void lst_SelChanged(object sender, EventArgs e)
        {
            Assembly ass = Assembly.LoadFile(dllName);
            string ts = lst.SelectedItem.ToString();
            Type t = ass.GetType(ts);
            //创建实例
            UserControl uc = Activator.CreateInstance(t) as UserControl;
            Controls.Add(uc); //添加
            uc.Dock = DockStyle.Bottom;
        }
    }

热心网友

这个在bin文件夹里面有个dll文件,你打开VS,新建项目,在左边有控件,把这个dll直接拖到控件的地方,就好了

热心网友

抱歉,我没接触过c#

热心网友

里面用了树形控件

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com