在用户控件的上下文中,用户控件不知道其他用户控件或其内容。您需要与页面上下文中的控件进行交互,因为该页面可以识别这两个控件。
你需要两样东西:
- 从BuyTourProduct控制触发的事件。
- 与TourProductDetail控件中的PanelName交互的方法。
如果一个事件已经存在,请使用它;否则,它将要求您修改BuyTourProduct的来源,并在该代码中公开事件并触发该事件。然后,您还想从控件中调用此事件。
public class BuyTourProduct : UserControl
{
// ...
public delegate void MyHideEventDelegate();
public event MyHideEventDelegate MyHideEvent;
// ...
public void SomeFunction()
{
if (MyHideEvent != null)
MyHideEvent();
}
// ...
}
接下来,你需要添加一个方法与PanelName互动里面TourProductDetail:
public class TourProductDetail : UserControl
{
// ...
private Panel PanelName;
// ...
public void SetPanelNameVisible(Boolean visible)
{
PanelName.Visible = visible;
}
// ...
}
从页面,你会订阅你想要的事件或MyHideEvent:
public partial class ReservationProduct : System.Web.UI.Page
{
// ...
protected void Page_Load(object sender, EventArgs e)
{
buyTourProduct.MyHideEvent += new BuyTourProduct.MyHideEventDelegate(buyTourProduct_MyHideEvent);
}
// ...
void buyTourProduct_MyHideEvent()
{
tourProductDetail.SetPanelNameVisible(false);
}
// ...
}
感谢您的示例代码。它有很大帮助! – Deverill 2012-02-29 17:51:23