2012-01-30 118 views
0

我有一个ASCX页假设page1.ascx在我有一个按钮单击事件处理如何调用按钮单击另一个ascx按钮上的一个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单击委托(page1.ascx)。如果是的话,那么可能如何呢?

+2

您不想触发事件,而是调用方法。因此,在第二个UserControl中实现一个公共方法'Save'并从'page1'调用它。 – 2012-01-30 13:01:30

回答

0

我建议将代码从代码隐藏转移到单独的类中,以便它可以被两个.ascx文件访问。

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 ... } 
} 

另一种方式是在第一控制财产申报您的按钮的事件,并在第二控制分配你的方法。

相关问题