【发布时间】:2017-01-31 20:16:35
【问题描述】:
我有两个事件处理方法。 Button1_Click(object sender, EventArgs e) 提示用户单击确定/取消。如果单击 ok,则触发另一个事件方法 - HiddenButton_Click(object sender, EventArgs e)。 现在,问题是我在 Button1_click() 方法中有一些参数需要传递给 HiddenButton_Click() 方法。我知道,我不应该直接从另一个事件方法调用一个事件方法,而需要在另一种方法中提取该功能。但是,我不确定正确的方法。
public partial class Test: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
var x = 2;
var y = 4;
// this event fires another event below.
// need to pass x & y to the event below.
}
protected void HiddenButton_Click(object sender, EventArgs e, int x, int y)
{
var z = x + y; // need x and y values from above method here.
}
}
【问题讨论】:
-
你在哪里找到一个事件处理程序不应该直接调用另一个事件处理程序的信息? BTW
HiddenButton_Click看起来不像EventHandler<T>-Delegate 兼容方法。对我来说,它看起来像一个普通的方法,只是命名为事件处理程序。是的,我知道您可以使用Action<T, T, T, T>声明事件。 -
我读到直接从另一个事件方法调用一个事件方法不是最佳实践。 HideenButton_Click 是一个事件方法。
-
我理解这个问题,但我认为调用事件方法处理程序没有问题,因为它只是一个方法。这个方法可以注册到一个事件中并不会改变方法本身。这就是为什么我要求提供该信息来源。在我看来,直接从事件处理程序引发事件并不是一个好习惯。但是将其提取到另一个方法并不能解决事件处理程序内部的调用路径问题。该事件仍在事件处理程序内部引发。
标签: c# asp.net events event-handling