Parameterübergabe bei AddHandler

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Osiris85.

    Parameterübergabe bei AddHandler

    Moin,

    ich habe ein Event, das automatisch ausgelöst werden soll, wenn ein Dateiupload beendet ist:

    VB.NET-Quellcode

    1. Private Sub UploadCompleted(ByVal sender As Object, ByVal e As Net.UploadFileCompletedEventArgs)
    2. My.Computer.FileSystem.MoveFile() 'usw.
    3. End Sub


    Deklariert wird das ganze hier:

    VB.NET-Quellcode

    1. Dim wc As New Net.WebClient
    2. AddHandler wc.UploadFileCompleted, AddressOf UploadCompleted


    Jetzt würde ich gerne bei der Ausführung des Events den Namen der Datei mitgeben, die nach dem Upload verschoben werden soll. Ich habe das dementsprechend angepasst:

    VB.NET-Quellcode

    1. Private Sub UploadCompleted(ByVal ZipdateiName As String, ByVal sender As Object, ByVal e As Net.UploadFileCompletedEventArgs)
    2. My.Computer.FileSystem.MoveFile() 'usw.
    3. End Sub


    Wie passe ich nun den AddHandler dementsprechend an? Es sind geschätzte 500° hier im Büro, ich komm nicht drauf. Mir fehlt die Übergabe des letzten Parameters (Net.UploadFileCompletedEventArgs):

    VB.NET-Quellcode

    1. AddHandler wc.UploadFileCompleted, AddressOf UploadCompleted("C:\Datei.zip",wc, "???")
    nein das gehtnicht...
    die Parameter welche übergeben werden, werden vom WebClient festgelegt...
    du müsstest diese in Variablen zwischen Speichern...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Bitte korrigiert mich, wenn ich Quatsch raushaue, aber wird nicht im Sender das komplette WebClient-Objekt mitgegeben? Wenn deine Datei Bestandteil dieses WC ist, kannst du den Namen aus dem Sender-Objekt holen, oda?
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    beim Addhandler werden keine Parameter übergeben, da werden nur ein Event mit einem Sub verknüpft. Und dieser Sub wird dann beim Event ausgelöst und erhält die an das Event übergebene Variablen.

    VB.NET-Quellcode

    1. ' somewhere
    2. Dim wc as WebClient
    3. ' something for the WebClient
    4. AddHandler wc.UploadFileCompleted, AddressOf WebClientSub
    5. End Sub/Function
    6. Private Sub WebClientSub(ByVal sender As Object, ByVal e As Net.UploadFileCompletedEventArgs)
    7. Dim myWebClient As WebClient = CType(sender, WebClient)
    8. ' operations
    9. End Sub


    ich hab jetzt mal das ganze hier zusammen gefasst.

    MfG M4n94fr34k
    Richtig, wenn ich jetzt aber

    VB.NET-Quellcode

    1. Private Sub WebClientSub (ByVal sender As Object, ByVal e As Net.UploadFileCompletedEventArgs)


    noch eine String-Variable mitgeben möchte:

    VB.NET-Quellcode

    1. Private Sub WebClientSub (ByVal Dateiname As String, ByVal sender As Object, ByVal e As Net.UploadFileCompletedEventArgs)


    Wie funktioniert der Aufruf mit dem AddHandler dann? Funktioniert das überhaupt?
    Geht so nicht direkt.

    Du müsstest den String irgendwo speichern. Weil es so nicht geht. Oder du erweiterst wie auch immer das Event auf eine String-Variable mehr und du kriegst es hin, wenn das Event ausgelöst wird das dir dieser String übergeben wird. Wenn der WebClient die Tag-Eigenschaft hat, dann kannst du die entweder da reinpacken oder, da der WebClient der sender ist und ich vermute dass du den WebClient zum Downloaden oder Uploaden aufforderst, kannst du evtl. aus dem WebClient oder aus e die Infos rausziehen kannst. Wie man den sender zum WebClient konvertiert haben ja schon 2 gepostet.

    MfG M4n94fr34k
    Hay,
    du kannst nur noch weitere Handler mitgeben aber String wie bereits gesagt , nicht.

    VB.NET-Quellcode

    1. Private Sub Wbc_UploadFileCompleted(ByVal sender As Object, ByVal e As System.Net.UploadFileCompletedEventArgs) Handles Wbc.UploadFileCompleted ' , Handles ..
    2. End Sub


    Mfg Kevin.