[英]Adding events in VB.Net
我已經在 C# 中編寫了以下代碼,但我需要在 VB.Net 中重新編寫它。 我該怎么做?
public void ImprimirDXReport(DXReportParams reportParams, int trayIdx, bool preview = false)
{
...
report.PrintingSystem.StartPrint += PrintingSystem_StartPrint;
...
}
private void PrintingSystem_StartPrint(object sender, PrintDocumentEventArgs e)
{
e.PrintDocument.DefaultPageSettings.PaperSource = e.PrintDocument.PrinterSettings.PaperSources[this.TrayIndex];
}
我一直在閱讀RaiseEvent和AddHandler ,但我對它們很困惑。
謝謝你。
首先,對於代碼轉換,我建議:
https://converter.telerik.com/
那不是那么困難。 將觸發事件的 class 應聲明如下:
Public Class A
Public Event SomethingDone(sender As Object, e As EventArgs)
Public Sub DoSomething()
RaiseEvent SomethingDone(Me, New EventArgs)
End Sub
End Class
所以這個 class 有一個聲明的事件 SomethingDone 並且當方法引發它時會觸發它。
接收 class 可以這樣聲明:
Public Class B
Private WithEvents DoIt As A
Private Sub DoIt_SomethingDone(sender As Object, e As EventArgs) Handles DoIt.SomethingDone
Dim X As Integer
' Some other stuff
End Sub
End Class
所以這個 class 使用 class A 並且可以接收他們的事件。 關鍵字在這里是“WithEvents”。 您必須使用此關鍵字聲明 class 才能接收他們的事件。
在 IDE 中,您現在可以選擇 class 並像控制事件一樣選擇事件。
事件處理程序將在末尾使用關鍵字“Handles”自動創建。 這表明將處理哪些事件。
如果要為事件提供參數,則必須創建一個繼承自 EventArgs 的新 class。
您的代碼可能就足夠了:
Private Sub PrintingSystem_StartPrint(ByVal sender As Object, ByVal e As PrintDocumentEventArgs) Handles report.PrintingSystem.StartPrint
e.PrintDocument.DefaultPageSettings.PaperSource = e.PrintDocument.PrinterSettings.PaperSources(Me.TrayIndex)
End Sub
對於 AddHandler,我推薦的 AddressOf 東西
https://www.codeproject.com/Articles/5041/Step-by-Step-Event-handling-in-VB-NET
我不想將 go 加入到代表中,目前這太多了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.