无法在自定义事件中进行调试

时间:2012-01-15 11:45:35

标签: c# asp.net .net

我为自定义服务器控件制作了自定义点击事件。控件是一个按钮,里面有一个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(),我会得到文字,所以我认为它正在解雇。由于应用程序的其余部分正在发生什么,我真的需要能够在我的事件中进行调试。这里发生了什么?我错过了一些重要的东西吗?

2 个答案:

答案 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配置中启用调试。 ; - )