Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    39

    richiamare una funzione (vb.net)

    Salve a tutti

    Dovrei richiamare un funzione da una webform ad un'altra.

    Ad esempio

    nella form1 mi dichiaro una variabile integer
    dim pippo as integer

    pippo = nomefunzione(parametri)

    non riesco a capire come posso fare

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Re: richiamare una funzione (vb.net)

    Originariamente inviato da fexo
    Dovrei richiamare un funzione da una webform ad un'altra.
    Trattandosi di Web Form, il forum ASP.NET è senz'altro il più adatto.

    Originariamente inviato da fexo
    nella form1 mi dichiaro una variabile integer
    dim pippo as integer
    pippo = nomefunzione(parametri)
    non riesco a capire come posso fare
    Devi tenere conto del fatto che le Web Form non funzionano allo stesso modo delle Windows Forms, per un motivo molto semplice: il mezzo con cui vengono visualizzate, un browser HTML.

    Ciascuna Web Form di cui disponi viene creata nel momento in cui richiami la pagina corrispondente .aspx.

    Se hai una funzione che deve essere sfruttata da più Web Form, ti conviene inserirla in una libreria (assembly) separata, magari dichiarandola Shared (non devi creare un oggetto della classe in cui la funzione si trova), utilizzarla da entrambe le Web Forms dopo aver importato il namespace corrispondente.

    Molti fraintendono l'uso e lo scopo di ASP.NET, che si prefissa l'obiettivo di rendere la progettazione delle Web Form semplice come quella delle Windows Form, ma non il funzionamento, poichè architetturalmente sono cose completamente differenti nonostante vengono rese molto simili tra loro dal punto di vista dell'utente.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3

    Re: Re: richiamare una funzione (vb.net)

    Ciascuna Web Form di cui disponi viene creata nel momento in cui richiami la pagina corrispondente .aspx.

    Molti fraintendono l'uso e lo scopo di ASP.NET, che si prefissa l'obiettivo di rendere la progettazione delle Web Form semplice come quella delle Windows Form, ma non il funzionamento, poichè architetturalmente sono cose completamente differenti nonostante vengono rese molto simili tra loro dal punto di vista dell'utente.

    Ciao!
    Lascirami dissentire su questi punti. Se il codice delle pagine è precompilato come nel caso di Visual Studio, è possibile richiamare la classe ed eventuali funzioni presenti in altre pagine come se facessero parte di classi distinte senza il minimo problema.

    Visual Studio, quando compila il progetto, inserisce tutte le classi di pagine (con funzioni, metodi e proprietà), in un unico assembly che inserirà nella cartella bin della web application. Ed è a questa dll che faranno riferimento le varie pagine per l'esecuzioni della pagina.

    Ecco che, dunque, si può istanziare da altre pagine classi appartenenti ad altre pagine asp.net per richiamare funzioni e quant'altro dichiarato pubblicamente.

    Se ipotizziamo che nella pagina "seconda.aspx" sia presente la classe "seconda" con all'interno la funzione pubblica "MiaFunzione", dalla pagina "prima.aspx" possiamo dichiarare tranquillamente:
    codice:
    dim sec as new seconda
    seconda.MiaFunzione(...)
    Se tale funzione fosse dichiarata come shared la cosa sarebbe ancora più semplice visto che potremmo richiamare tale funzione direttamente senza istanziare la classe:
    codice:
    seconda.MiaFunzione(...)
    Il problema di una tale tecnica è la leggibilità dell'intera applicazione compromessa. La soluzione migliore è come quella che tu hai suggerito: la creazione di una classe esterna a cui accedere da entrambe le pagine.

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Re: Re: Re: richiamare una funzione (vb.net)

    Originariamente inviato da AndreaZani
    [...]
    Il problema di una tale tecnica è la leggibilità dell'intera applicazione compromessa. La soluzione migliore è come quella che tu hai suggerito: la creazione di una classe esterna a cui accedere da entrambe le pagine.
    Concordo su tutto quanto hai detto. Non ho tuttavia suggerito la soluzione dell'inserimento della funzione nella classe relativa alla pagina secondaria proprio perchè, secondo il mio modo di progettare le applicazioni, è un chiaro segnale di un difetto di progettazione dato che la funzionalità condivisa andrebbe (quasi) sicuramente posta in una terza classe.

    Tra l'altro, so che non tutti fanno uso di Visual Studio e della tecnica "code behind", perciò in tali casi la soluzione era decisamente inattuabile.

    In terzo luogo, mi sentivo di persuadere l'autore originale del quesito dal considerare una Web Form del tutto alla stregua di una Windows Form: la prima tipologia di "maschera" è legata a meccanismi estranei alla seconda, come il PostBack e altre caratteristiche infrastrutturali che avrebbero potuto generare, in seguito, errori difficilmente individuabili e concettualmente incompatibili, soprattutto se si procedeva all'uso di eventuali controlli della pagina per ottenere il risultato sperato (non si sa mai).

    Fermo restando la piena correttezza di tutto ciò che hai detto, quindi, ho evitato (e perciò scoraggiato) quella soluzione anche per prevenire eventuali problemi futuri.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5

    Re: Re: Re: Re: richiamare una funzione (vb.net)

    Tra l'altro, so che non tutti fanno uso di Visual Studio e della tecnica "code behind", perciò in tali casi la soluzione era decisamente inattuabile.
    Purtroppo tale tecnica funziona anche con inserendo il codine nella pagina, è sufficiente dichiarare il nome di classe nella direttiva page e che questa pagina sia già stata richiamata, quindi compilata, per poter accedere a funzioni shared presenti all'interno.

    Se a livello di gestibilità è già un casino con Visual Studio immagina con il codice inline.
    Fermo restando la piena correttezza di tutto ciò che hai detto, quindi, ho evitato (e perciò scoraggiato) quella soluzione anche per prevenire eventuali problemi futuri.
    Quoto completamente!

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

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 © 2026 vBulletin Solutions, Inc. All rights reserved.