2010-01-21 52 views

回答

0

这个问题让我生气了好一阵子。我不认为我的解决方案是完美的,但它确实有助于我的初级开发人员进行编码。我们有一个基本的用户控件,所有用户控件都继承,我们(如你)拥有一个所有页面必须继承的基本页面类(团队规则)。在用户控制是被强类型的特定页面类型将包含它(页基类,如果这是可变的或未知的时候)的特性称为ParentForm。

在页面的加载事件,我们手动设置所有用户控件(我们这样做,我们对所有的母版页水平控制母版页为好)的Parentform属性。

protected Page_Load(object sender, System.EventArgs e) 
{ 
    this.myControl.ParentForm = this; 
    this.myControl2.ParentForm = this; 
} 

这提供了从任何用户控件回到页面及其任何暴露方法的即时访问。它还提供了一个标准化的(在我们的团队中)允许控件通过ParentForm中的一个接口进行通信的方法。

我们的标准是手动执行这项任务。对我来说,这是一个人才的考虑,以确保开发人员都知道他们正在增加(未设置ParentForm会导致空引用例外,如果你尝试显然访问)的控制。如果你想自动地执行这个设置,你可以通过任何用户控件使用基类的Page_InitComplete事件循环,并设置ParentForm以“本”的方式。

0

作为在不同的目录访问#1父页面类将获得视觉工作室给他们默认不同的命名空间,造成父页面类不可见控件。

确保两个类的名称空间声明相同,或将父页面类名称空间导入到带有using语句的控制器中。