2

我正在将一个 VB 项目转换为 C#,我注意到在 vb 中它将调用如下函数:

 Protected Sub WZTestResult_NextButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles WZTestResult.NextButtonClick 

它处理向导的下一个按钮单击事件。

在 c# 中,我必须添加以下行:

 OnNextButtonClick="WZTestResult_NextButtonClick" 

在 asp.net 源页面上,否则它永远不会命中该功能。这是 c# 中的必需品,还是有一些我忽略或遗漏的东西?基本上,在 c# 中有没有一种方法可以像在 VB 中一样在不添加源页面上面的行的情况下实现该功能?

4

2 回答 2

1

VB 的 Handles 关键字没有等效项。

如果需要,您可以在页面初始化时在后面的代码中执行此操作

public Default() {

    this.Init += (_o, _e) => {
         this.Wizard.NextButtonClick += WZTestResult_NextButtonClick;
    }
}

默认是页面构造函数。

于 2012-04-13T16:14:22.183 回答
0

一般来说,IDE 会为您处理大部分工作。如果您在 Visual Studio 设计器中将按钮添加到表单并双击该按钮,它将带您进入代码中该控件的事件处理程序(在本例中为单击事件)。

    private void button1_Click(object sender, EventArgs e)
    {
    }

您会注意到您所在的文件不包含将此方法附加到控件事件的代码。Visual Studio 将表单拆分为包含您的代码的部分类和包含自动生成的接线代码的生成类。在看起来像这样的解决方案资源管理器中:

Form1.cs -> 将代码添加到 Form1.Designer.cs 的文件 -> 自动生成的设计器文件

您不想更改 .designer.cs 文件,因为在可视化设计器中更改表单可能会覆盖您的更改。您只需要在 Form1.cs 文件中工作,您甚至可能永远不会看到事件分配代码。

因此,您的问题的答案是否定的,但需要注意的是,您很少需要添加或查看此代码:

this.Wizard.NextButtonClick += WZTestResult_NextButtonClick;
于 2012-04-13T20:26:26.137 回答