Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di xamax
    Registrato dal
    Oct 2001
    Messaggi
    141

    Chiamare Sub da altra Sub

    Ciao a tutti...
    volevo sapere se esisteva un modo corretto per chiamare una Sub da un altra sub senza incorrere nell'errore:
    BC30455: Argomento non specificato per il parametro 'e' di 'Public Sub...o altri errori simili.
    <<<<<<<<<<<<<<<<<<<<esempio>>>>>>>>>>>>>>>>>>>>> >
    sub Subprova2 (ByVal sender As Object, ByVal e As EventArgs)
    ...
    ...
    ...
    ..
    end Sub

    sub Subprova1 (ByVal sender As Object, ByVal e As EventArgs)
    ...
    ...
    ...
    ..
    Subprova2()
    end Sub

    Se tolgo (ByVal sender As Object, ByVal e As EventArgs) da SubProva2 la chiama ma vanno in errore i controlli della pagina e l'errore diventa: BC30408: Il metodo 'Public Sub Subprova2()' non ha la stessa firma del delegato 'Delegate Sub EventHandler(sender As Object, e As System.EventArgs)' l'errore e su controlli tipo Datagrid.

    è vero che in alternativa posso sempre copiare il codice da eseguire in più sub, ma perchè scrivere 2 3 4 volte la stessa cosa??
    grazie e ciao a tutti
    -||> xamax <||-

  2. #2
    Utente di HTML.it L'avatar di Cartman
    Registrato dal
    Sep 2002
    Messaggi
    246
    non l'ho mAI FATTO ma secondo me potresti fare così:
    codice:
    sub Subprova2 (ByVal sender As Object, ByVal e As EventArgs) 
    ... 
    ... 
    ... 
    .. 
    end Sub 
    
    sub Subprova1 (ByVal sender As Object, ByVal e As EventArgs) 
    ... 
    ... 
    
    Subprova2(sender,e) 
    end Sub
    Damose da fa...e volemose bene.
    Carol Woityla 26-2-2004

  3. #3
    Utente di HTML.it L'avatar di xamax
    Registrato dal
    Oct 2001
    Messaggi
    141
    Grazie Cartman funziona...
    anche se non ho compreso la logica..

    comunque grazie ancora
    ciao
    -||> xamax <||-

  4. #4
    :quipy:

    codice:
    Call NomeSub()

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Se hai una procedura del tipo:

    sub prova(parametro1, parametro2)



    la puoi richiamare da un'altra con:
    prova(nothing, nothing)

    presumendo che parametro1 e parametro2 non siano conosciuti

    Naturalmente, dentro la sub Prova, non si debbono utilizzare i parametri passati altrimenti bisogna conoscere parametro1 e parametro2 e passarli correttamente:

    prova(parametro1, parametro2)

    Naturalmente, Call prova() non funzionerà di certo perchè le procedure debbono essere chiamate sempre con la stessa firma

    Ciao
    Pietro

  6. #6

  7. #7
    Utente di HTML.it L'avatar di Cartman
    Registrato dal
    Sep 2002
    Messaggi
    246
    Originariamente inviato da xamax
    Grazie Cartman funziona...
    anche se non ho compreso la logica..

    comunque grazie ancora
    ciao
    il concetto è semplice,
    tu hai una sub x che grazie ai parametri (ByVal sender As Object, ByVal e As EventArgs) intercetta lo stato del controllo che genera l'esecuzione della sub. esempio
    <asp:button id=bottone runat=server commandname=pippo text="Submit" onclick=x />
    al click di bottone viene esguita la sub e con una istruzione del tipo:
    codice:
    dim oButton as Button
    oButton=sender (cioè il controllo che ha generato l'evento)
    ti ritrovi una variabile oggetto oButton che in pratica è il tuo bottone che puoi manipolare o interrogare come vuoi. ad esempio se vuoi assegnare il suo commandname a label1 ti basterà fare
    codice:
    label1.text=oButton.commandname
    a questo punto se vuoi richiamare un'altra sub che possa contenere lo stato del controllo origine devi richiamarla come abbiamo visto.
    ti dirò di più, se nella prima sub modifichi le proprietà del controllo e vuoi che queste modifiche siano visibili nella seconda sub devi fare così:
    codice:
    sub Subprova1 (ByVal sender As Object, ByVal e As EventArgs) 
    ... 'esempio di modifica proprietà 
    dim oButton as Button
    oButton=sender 
    obutton.text="CICCIO"
    Subprova2(oButton,e) 
    end Sub
    nella seconda sub con il seguente codice:
    codice:
    dim oButton2 as Button
    oButton2=sender
    response.write(oButton2.text)
    visualizzerai "CICCIO" e non "Submit"

    Spero di essere stato chiaro
    Damose da fa...e volemose bene.
    Carol Woityla 26-2-2004

  8. #8
    Utente di HTML.it L'avatar di xamax
    Registrato dal
    Oct 2001
    Messaggi
    141
    troppa grazia...
    grazie a tutti

    Massimo
    -||> xamax <||-

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.