我为自定义服务器控件制作了自定义点击事件。控件是一个按钮,里面有一个linkbutton和普通按钮。该事件实际上为链接提供了一个公共点击事件,如果点击它们本身就会触发正常按钮。
这是我的代码:
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()
,我会得到文字,所以我认为它正在解雇。由于应用程序的其余部分正在发生什么,我真的需要能够在我的事件中进行调试。这里发生了什么?我错过了一些重要的东西吗?
答案 0 :(得分:0)
您的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委托是不必要的,因为你没有为你的事件使用任何自定义args,所以你应该只能写:
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
事件的代码吗?
答案 1 :(得分:0)
请参阅Polity的评论,同时确保在您的Web配置中启用调试。 ; - )