簡體   English   中英

在 VB.Net 中添加事件

[英]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];
    }

我一直在閱讀RaiseEventAddHandler ,但我對它們很困惑。

謝謝你。

首先,對於代碼轉換,我建議:
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM