65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在子控件中访问父控件的方法

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.06/5 (12投票s)

2008年7月9日

CPOL

2分钟阅读

viewsIcon

73670

downloadIcon

622

从子控件访问父页面和控件方法的简单技巧

引言

本文面向刚开始使用用户控件的初学者。在使用用户控件时,有时需要从子用户控件访问父用户控件和父页面中声明的方法。这里提供一个简单的解决方案。

背景

我遇到了同样的问题,需要从子用户控件访问父用户控件中声明的方法,并开始寻找解决方案。我使用 abstract 类得到了一个简单的解决方案,因为无法访问 Parent 对象中的用户自定义方法。

这里有一个小技巧。我创建了 abstract class AbstractUserControl AbstractPage,其中 AbstractUserControl 继承自 System.web.UI.UserControl ,而 AbstractPage 继承自 System.Web.UI.Page。我将这两个类放置在 App_code 文件夹中,以便在站点中的任何地方都可以访问它们。

Using the Code

这里是 abstract 类,其中声明了 abstract 方法。这些 abstract 方法将在需要从子控件调用的 Page UserControl 中被重写。

namespace CodeProject.Sample
{
public abstract class AbstractPage : System.Web.UI.Page 
{
public AbstractPage()
{
//
// TODO: Add constructor logic here
//
}

// implementation in the concrete class
public abstract void callMefromChild();
}
}

我添加了一个类似的 abstract 类供用户控件继承。

接下来,我使用这些 abstract 类来实现功能。现在,从子控件访问父页面方法变得非常简单。以下是代码片段

protected void btnClick_Onclick(Object sender, EventArgs e)
{ 
   ((AbstractPage)Parent.Page).callMefromChild(); 
}

Parent.Page 简单类型转换为 AbstractPage 类,可以暴露 Page 中的用户自定义方法。我们可以使用相同的技巧来访问从子用户控件访问父用户控件中声明的方法。

我长期使用 The Code Project,但从未为社区做出贡献。今天我从这篇文章开始,并希望以后能提出一些有趣的东西。希望这能帮助到某人。如果您需要任何澄清,请随时发表评论。

© . All rights reserved.