+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 10 su 10

individuazione sender

  1. #1
    eurostar_italia non è in linea Scolaretto
    Post
    181
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buongiorno a tutti,
    temo come al solito di perdermi in un bicchier d'acqua.
    Ho una form principale, divisa in tre groupbox.
    ognuno dei tre groupbox ha un pulsante che apre una seconda form e a seconda del pulsante che ha generato l'apertura deve scrivere un intestazione diversa.
    Non riesco a capire come individuare il pulsante che "chiama" la form.
    nell'evento load della seconda form,il valore di sender è "form2 ,text : form2" ovvero il nome della seconda form.
    dove sbaglio ?
    grazie a tutti

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    3,134
    Like Inviati  
    5
    Like Ricevuti  
    5
    Un modo consiste nel definire una proprietà di form2 che viene impostata con un valore convenzionale che corrisponde al button chiamante
    ℹ️ Leggi di più su Brontolo ...

  3. #3
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,491
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Il sender è l'oggetto che attiva l'evento. Il sender del Click del button sarà il bottone, ma il sender del Load è la Form.
    Secondo quale principio alla Load di un secondo form dovrebbe passare automaticamente l'informazione di un Button di una prima form?

    Se vuoi passare informazioni da un form all'altro devi usare proprietà/metodi prevedendoli secondo le regole della OOP.

    (vedi suggerimento di Brontolo)
    ℹ️ Leggi di più su AntonioG ...

  4. #4
    eurostar_italia non è in linea Scolaretto
    Post
    181
    Like Inviati  
    0
    Like Ricevuti  
    0
    avete ragione ,ecco dove mi bloccavo.mi sono confuso con un altro metodo in un altra form...e mi sono intestardito.
    grazie a tutti per il consiglio e per la celere risposta.
    ora mi documento su quanto consigliato da brontolo. e da Antonio.
    grazie davvero

  5. #5
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,491
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Per farla breve, potresti usare nella Form2 una proprietà pubblica

    Public Property FormCaller As String = ""
    
    e prima di chiamare la Show nel click del Button

    Form2.FormCaller = sender.Name
    
    (ma non è l'unico modo e ha delle controindicazioni in alcuni casi).

    La cosa migliore è scrivere un overload della Show nella Form2

        Private m_FormCaller As String = ""
    
        Public Overloads Sub Show(formCaller As String)
            m_FormCaller = formCaller
            MyBase.Show()
        End Sub
    
    e quindi chiamarla dal Click del button in Form1

    Form2.Show(sender.Name.ToString())
    
    Ultima modifica di AntonioG; 17-01-2021 12:44 
    ℹ️ Leggi di più su AntonioG ...

  6. #6
    eurostar_italia non è in linea Scolaretto
    Post
    181
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Private m_FormCaller As String = ""

    Public Overloads Sub Show(formCaller As String)
    m_FormCaller = formCaller
    MyBase.Show()
    End Sub
    [/code]

    e quindi chiamarla dal Click del button in Form1

    Form2.Show(sender.Name.ToString())
    
    ho fatto cosi come mi hai suggerito e funziona perfettamente (ovviamente).però non ho chiaro il funzionamento dell'overload : prende in ingresso il valore passato dall'evento click de button,ma
    perchè dichiarare questo
         Private m_FormCaller As String = ""
    
    ora comunque mi studierò le funzionalità dell'overload
    grazie davvero

  7. #7
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Post
    7,245
    Blogs
    3
    Like Inviati  
    19
    Like Ricevuti  
    13
    Quote Originariamente inviato da eurostar_italia Visualizza il messaggio
    perchè dichiarare questo
         Private m_FormCaller As String = ""
    
    perché in qualsiasi routine del tuo Form, utilizzando quella variabile saprai sempre qual è stato il pulsante a chiamare il Form che stai usando. Diversamente, all'infuori dell'evento Show, la variabile non esisterebbe.

    Quote Originariamente inviato da eurostar_italia Visualizza il messaggio
    non ho chiaro il funzionamento dell'overload
    L'overload, in pratica è una routine che si "sostituisce" a quella standard.
    L'evento Show normalmente non ha alcun parametro in ingresso, ma con un Overload, puoi far richiamare il "tuo" evento, che possiede uno o più parametri, che puoi usare per le tue necessità.

    TheTruster
    Ultima modifica di TheTruster; 17-01-2021 16:41 
    ℹ️ Leggi di più su TheTruster ...

  8. #8
    eurostar_italia non è in linea Scolaretto
    Post
    181
    Like Inviati  
    0
    Like Ricevuti  
    0
    immaginavo. @TheTruster....grazie davvero

  9. #9
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,491
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Quote Originariamente inviato da TheTruster Visualizza il messaggio
    L'overload, in pratica è una routine che si "sostituisce" a quella standard.
    O meglio, si aggiunge a quelle già esistenti con lo stesso nome e diversi parametri.

    L'evento Show normalmente non ha alcun parametro in ingresso
    Il metodo (non evento) Show ha due forme

    Show() ' senza parametri
    Show(IWin32Window) ' con un parametro di tipo IWin32Window

    Il primo è quello normalmente usato, il secondo si usa per indicare il proprietario.

    L'overload serve ad "aggiungere" un tuo metodo Show con parametri diversi da quelli esistenti per i tuoi scopi.
    ℹ️ Leggi di più su AntonioG ...

  10. #10
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Post
    7,245
    Blogs
    3
    Like Inviati  
    19
    Like Ricevuti  
    13
    Grazie per la precisazione!
    ℹ️ Leggi di più su TheTruster ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 11
    Ultimo Post: 28-09-2013, 13:15
  2. Risposte: 5
    Ultimo Post: 25-07-2012, 17:20
  3. Risposte: 2
    Ultimo Post: 29-08-2010, 07:45
  4. Problema con i parametri Sender ed EventArgs
    Da Marco2012 nel forum Visual Basic .Net
    Risposte: 14
    Ultimo Post: 01-02-2010, 12:56
  5. Individuazione della presenza di files in una cartella di rete
    Da momo7342 nel forum Visual Basic .Net
    Risposte: 4
    Ultimo Post: 08-01-2006, 14:20