当前位置:编程学习 > C#/ASP.NET >>

WinForm如何动态加载用户控件,在线等。

新建两个用户控件UserControl1 和UserControl2 在主窗体上新建两个按钮和Panel。如何才能点击两个按钮时让panel加载不同的用户控件。
关键是我想把加载用户控件的功能写成一个函数,点击按钮时传递参数给这个函数然后函数就能加载用户控件。

希望各位能给个参考代码。 --------------------编程问答-------------------- UserControl1 uc = new UserControl1();  
uc.CustomValue = "动态加载";  
uc.UserControlValueChanged += new TextBoxChangedHandle(userControl11_UserControlValueChanged);  
this.Panel1.Controls.Add(uc);  

--------------------编程问答--------------------
引用 1 楼 wuyq11 的回复:
UserControl1 uc = new UserControl1();  
uc.CustomValue = "动态加载";  
uc.UserControlValueChanged += new TextBoxChangedHandle(userControl11_UserControlValueChanged);  
this.Panel1.Controls.Add(uc);  
……


如何把加载功能写成一个函数。比如我有好多个用户控件。我想直接把用户控件名或其他传递给一个函数,这个函数就能加载这个用户控件。 --------------------编程问答-------------------- 问题已经解决。

private void ShowUserControls(string UserControlName, DevExpress.XtraEditors.PanelControl PanelName)
        {
            PanelName.Controls.Clear();

            Type t = System.Reflection.Assembly.GetExecutingAssembly().GetType(UserControlName);

            UserControl uc = (UserControl)Activator.CreateInstance(t);
            uc.Dock = DockStyle.Fill;
            uc.Parent = PanelName;

        }
--------------------编程问答--------------------

  //AssemblyName:程序集的全路径
  //TargetEntityFullName:控件的命名空间+类名
  public static Control LoadControl(string AssemblyName, String TargetEntityFullName)
        {
            Control ctr= null;
            try
            {
           Assembly ass =  Assembly.LoadFile(AssemblyName);
           ctr = ass.CreateInstance(TargetEntityFullName, true, BindingFlags.CreateInstance, null, null, null, null);
            }
            catch (Exception ex)
            { 
                MessageBox.Show(ex.Message, "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            return ctr;
        }
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,