【问题标题】:can't access user control public properties无法访问用户控制公共属性
【发布时间】:2011-01-11 08:58:39
【问题描述】:

我在 VB.NET 和 C# 中都使用 VS2008

我创建了一个简单的自定义用户控件并添加了一些公共功能

我的问题是,如果我不将用户控件从工具箱拖放到 winform 上,而是尝试通过代码动态创建一个 - 我无法访问公共函数和属性

我不明白为什么会有区别,但似乎有区别。

希望对此事有任何帮助

谢谢

【问题讨论】:

    标签: function controls public


    【解决方案1】:

    您需要将类型转换为 usercontrol 类型 然后它工作 例如:

    public partial class uctls_contact_uctlCompanyViewContacts : System.Web.UI.UserControl
    {
    public bool ReadOnlyMode
        {
            get;
            set;
        }
    }
    
    UserControl uctlCompanyViewContacts = (UserControl)Page.LoadControl("uctlCompanyViewContacts.ascx");
    uctlCompanyViewContacts.ID = "uctlCompanyViewContacts";
    panelCompanyViewContacts.Controls.Add(uctlCompanyViewContacts);
    ((uctls_contact_uctlCompanyViewContacts)uctlCompanyViewContacts).ReadOnlyMode = true;
    

    【讨论】:

      【解决方案2】:

      您将变量定义为UserControl 类型。因此,智能感知只会向您显示 UserControl 类的成员,即使它实际上是 myCustomControl 类型。

      将您的初始声明更改为myCustomControl myUC;,您应该一切顺利。

      【讨论】:

        【解决方案3】:

        你是否使用LoadControl方法加载控件?

        即。

        MyControl ctrl = (MyControl)LoadControl("~/MyControl.ascx"); 
        

        【讨论】:

        • 我在表单类的顶部添加了一条 using 语句,例如使用 myUserControls 我在表单类的顶部定义了一个变量作为类型用户控件,例如 UserControl myUC;然后在加载事件中,我将它分配给我的自定义用户控件,例如 myUC = new MyUserControls.myCustomControl(); this.controls.add(myUC); myUC.show();到目前为止一切正常,我在表单上看到了用户控件,但由于某种原因,如果我想访问一个公共函数,例如:myUC.ShowDetails() 自动完成根本没有向我显示该函数希望这是有道理的
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 2017-05-17
        • 2021-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多