2017-11-24 34 views
-1

私はC#WinFormアプリケーションをVB.Netに移行しています。ボタンを動的に作成し、EventHandler()を追加します。

コードの一部では、ボタンを定義し、メソッドに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が欠落していると言ってきたこの1

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

にその行を変更している(クリック)

のような任意の指定されたイベントを定義していないです。

特定のメソッドを呼び出すために、そのボタンにイベントハンドラをアタッチするにはどうすればよいですか?

おかげVB.NETで

答えて

2

方法を直接参照するとき、あなたはAddressOf operatorを使用する必要があります。これは、問題のメソッドのデリゲートを作成するために使用されます。

New EventHandler(...)シグネチャが正しい場合、デリゲートはイベントハンドラに暗黙的にキャストされるため、不要です。

これは動作するはずです:

newExportButton = New ToolStripButton("", Nothing, AddressOf ExportarReporte) 
関連する問題