• C# aspx页面动态加载ascx用户控件 及 利用反射调用其内方法


    //控件代码
    public partial class WebUserControl : System.Web.UI.UserControl
    {
        public void TestMethod(string strID)
        {
            this.TextBox1.Text += " WebUserControl:" + strID;
            //其他相关操作
        }
    }

    //控件代码
    public partial class WebUserControl2 : System.Web.UI.UserControl
    {
        public void TestMethod(string strID)
        {
            this.TextBox1.Text += " WebUserControl2:" + strID;
            //根据传入参数进行其他相关操作
        }
    }

    //页面代码
    public partial class Default1 : System.Web.UI.Page
    {
        bool isShow = true;//是
        string strWebUserControls = "WebUserControl,WebUserControl2";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (isShow)
            {
                string[] strUCs = strWebUserControls.Split(",".ToCharArray()[0]);
                for (int i = 0; i < strUCs.Length; i++)
                {
                    string strUCName = strUCs[i].ToString();
                    Control a = Page.LoadControl(strUCName+".ascx");
                    a.ID = strUCName;
                    this.Panel1.Controls.Add(a);
                }           
            } 
        }

        //页面按钮操作
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (isShow)
            {
                string[] strUCs = strWebUserControls.Split(",".ToCharArray()[0]);
                for (int i = 0; i < strUCs.Length; i++)
                {
                    string strUCName = strUCs[i].ToString();
                    Type tc = this.Panel1.FindControl(strUCName).GetType();
                    Control uc = this.Panel1.FindControl(strUCName);
                    ////object o = System.Activator.CreateInstance(uc.GetType());
                    System.Reflection.MethodInfo m = tc.GetMethod("TestMethod");
                    object[] objParas = new object[1];
                    objParas[0] = "1";
                    m.Invoke(uc, objParas);
                    ////m.Invoke(a, null);
                }
            }
         }
    }

  • 相关阅读:
    (原创)xcode4的workspace里各lib工程与app工程联编之runscript简介
    使用textmate
    (转)DebuggingTechniques
    (转)ObjectiveC的单例模式(singleton)
    VIA = Via Inner Action
    Das Vergessmichnicht
    Resume
    Explore Subdivide Surface Algorithm Of Maya
    为什么我的文章总是没人回复
    Summer Dream Für Meines Leben
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1298673.html
Copyright © 2020-2023  润新知