2010-01-31 140 views
1

我使用VS2008既VB.NET和C#无法访问

我创建了一个简单的自定义用户控件,并增加了一些社会功能,它

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

我不明白为什么在那里会有所不同,但似乎是。

将您是否使用了LoadControl方法加载控制得到任何帮助就此事

感谢

回答

6

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

更改您的初始声明为myCustomControl myUC;,你应该很好去。

+0

工程就像一个魅力 - 非常感谢 – Avner 2010-01-31 09:00:53

0

即。

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

我在窗体类例如顶部添加using语句 使用myUserControls 我定义一个变量作为我的表单类顶部的类型用户控件,例如 UserControl myUC; 然后在加载事件中,我将其分配给我的自定义用户控件,如下所示: myUC = new MyUserControls.myCustomControl(); this.controls.add(myUC); myUC.show(); 一切了这一点工作正常 我在表单上看到,但由于某种原因,用户控制,如果我想访问公共功能,如: myUC.ShowDetails() 自动完成不显示我的功能齐全 希望这是有道理的 – Avner 2010-01-31 08:18:27

1

您neeed键入施放到用户控件的类型 然后它 对于防爆:

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;