【问题标题】:Create dynamically a button and add EventHandler()动态创建按钮并添加 EventHandler()
【发布时间】:2017-11-24 18:55:03
【问题描述】:

我正在将 C# WinForm 应用程序迁移到 VB.Net。

在部分代码中定义一个按钮并将一个事件处理程序添加到一个方法中。

 ToolStripButton newExportButton = new ToolStripButton();
  newExportButton = new ToolStripButton("", null, new EventHandler(ExportReport));

  private void ExportReport(Object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.DefaultExt = "pdf";
            saveFileDialog.Filter = Visor.ObtenerFiltroDeExtensiones();

            if (saveFileDialog.ShowDialog() == DialogResult.OK && Path.HasExtension(saveFileDialog.FileName))
            {
                ReportDocument reportDocument = this.VisorReporte.ReportSource as ReportDocument;               
                reportDocument.ExportToDisk(dicExtensiones[Path.GetExtension(saveFileDialog.FileName)], saveFileDialog.FileName);
            }
        }

当我尝试迁移到 Vb.Net 时,我无法迁移 EventHandler。

我已阅读 here 但它不符合我的需要。我没有定义任何指定的事件,例如(点击)

我已经把那一行改成了这一行

  newExportButton = New ToolStripButton("", Nothing, New EventHandler(ExportarReporte))

我有一个错误提示 AddressOf 丢失。

如何将事件处理程序附加到该按钮以调用特定方法?

谢谢

【问题讨论】:

    标签: vb.net dynamic eventhandler c#-to-vb.net


    【解决方案1】:

    在 VB.NET 中,当直接引用方法时必须使用 AddressOf operator。它用于创建相关方法的委托。

    New EventHandler(...) 不是必需的,因为如果其签名正确,则委托会隐式转换为事件处理程序。

    这应该可行:

    newExportButton = New ToolStripButton("", Nothing, AddressOf ExportarReporte)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-24
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2013-08-06
      • 1970-01-01
      相关资源
      最近更新 更多