2017-11-24 13 views
-1

C# WinForm 응용 프로그램을 VB.Net으로 마이그레이션하려고합니다.동적으로 버튼을 만들고 EventHandler()를 추가하십시오.

코드의 일부에서 Button을 정의하고 메소드에 EventHandler를 추가하십시오.

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을 읽었지만, 내가 필요한 것에는 맞지 않는다. 나는 내가 오류가 AddressOf가없는 말을 한이 하나

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

에 그 라인을 변경했습니다 (클릭)

같은 어떤 지정된 이벤트를 정의하고 있지 않다.

특정 메서드를 호출하기 위해 해당 단추에 이벤트 처리기를 연결하려면 어떻게해야합니까? 방법에 직접 참조 할 때 AddressOf operator를 사용해야합니다 VB.NET에서

감사

답변

2

. 이 메서드는 해당 메서드의 대리자를 만드는 데 사용됩니다.

New EventHandler(...) 서명이 올바른 경우 대리자가 암시 적으로 이벤트 처리기에 캐스팅되므로 필요하지 않습니다.

이 작동합니다 :

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