我正在将C#WinForm应用程序迁移到VB.Net。
在部分代码中定义一个Button并将一个EventHandler添加到Method。
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的问题。
我已阅读open issue但它不符合我的需要。我没有定义任何指定的事件,如(点击)
我已将该行更改为此行
newExportButton = New ToolStripButton("", Nothing, New EventHandler(ExportarReporte))
我错误地说AddressOf
缺失。
如何将事件处理程序附加到该按钮以调用特定方法?
由于
答案 0 :(得分:3)
在VB.NET中,直接引用方法时必须使用AddressOf
operator。它用于创建相关方法的委托。
New EventHandler(...)
不是必需的,因为如果委托的签名正确,则委托被隐式地转换为事件处理程序。
这应该有效:
newExportButton = New ToolStripButton("", Nothing, AddressOf ExportarReporte)