我有一个ascx页面假设page1.ascx,因为我有一个按钮点击事件处理程序
btnSave.Click +=
delegate
{
if (Save != null) Save(this, EventArgs.Empty);
};
我还有另一个ascx页面,假设是page2.ascx,我点击了一下按钮
protected void btnEdit_Click(object sender, EventArgs e)
{
// want to call
btnSave.Click +=delegate
{
if (Save != null) Save(this, EventArgs.Empty);
};
}
我想在btnEdit(page2.ascx)上调用btnSave click delegate(page1.ascx)。有可能,如果是,那么如何?
答案 0 :(得分:1)
如果我理解你的意思,一种方法如下:
public class Control1 : UserControl {
public delegate void ButtonClickHandler(object sender, EventArgs e);
public ButtonClickHandler ButtonClickEvent {get;set;}
public void Save(object sender, EventArgs e) {
//do something
if (ButtonClickEvent != null) {ButtonClickEvent(sender, e);}
//do something
}
}
public class Control2 : UserControl {
protected override void OnLoad(EventArgs e) {
control1.ButtonClickEvent += YourMethod;
}
protected void YourMethod(object sender, EventArgs e) { // do something here ... }
}
另一种方法是将第一个控件中的按钮事件声明为属性,并在第二个控件中指定方法。
答案 1 :(得分:0)
我建议将代码从代码隐藏中移出并放入一个单独的类中,以便两个.ascx文件都可以访问它。