可以';t在自定义事件内调试
本文关键字:自定义 事件 调试 可以 | 更新日期: 2023-09-27 18:20:25
我为自定义服务器控件创建了一个自定义点击事件。控件是一个按钮,里面有一个链接按钮和普通按钮。该事件本质上为链接和普通按钮提供了一个常见的点击事件,如果它们被点击,就会触发。
这是我的代码:
public delegate void ButtonClick(object sender, EventArgs e);
public event ButtonClick Click;
protected virtual void OnClick(object sender, EventArgs e)
{
if (Click != null)
Click(sender, e);
}
void butButton_Click(object sender, EventArgs e)
{
OnClick(sender, e);
}
void lbuButton_Click(object sender, EventArgs e)
{
OnClick(sender, e);
}
现在在我使用控件的页面上:
void sbuSave_Click(object sender, EventArgs e)
{
// Cannot debug here! Can't check if event is fired.
}
我可以不在事件内部调试吗,因为它没有启动?如果我在里面做Response.Write()
,我会得到文本,所以我认为它在开火。由于应用程序其他部分的情况,我真的需要能够在事件内部进行调试。这是怎么回事?我是不是错过了什么重要的东西?
您的ButtonClick
事件在这里是不必要的,如果两个控件都只调用同一个点击事件,那么可能更容易做到:
// hook up both click events of each control to same handler
butButton.Click += DoSomethingOnClick;
lbuButton.Click += DoSomethingOnClick;
private void DoSomethingOnClick(object sender, EventArgs e)
{
...
}
编辑
我想我一开始误解了这个问题!看起来您想要公开一个单独的Click
事件,无论在自定义控件上单击哪个按钮,都应该调用该事件(如果我错了,请纠正我?)。
如果是这样的话,那么你的ButtonClick代理是不必要的,因为你没有为你的活动使用任何自定义参数,所以你应该能够写:
public event EventHandler Click = new delegate() { };
public void butButton_Click(object sender, EventArgs e)
{
Click(sender, e);
}
public void lbuButton_Click(object sender, EventArgs e)
{
Click(sender, e);
}
至于为什么它没有启动,在没有看到完整代码的情况下很难说。您能在自定义控件上发布用于连接Click
事件的代码吗?
请参阅Polity的评论,并确保在您的web配置中启用调试。;-)