Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [VB.NET 2010] Visibilità variabili

    Buongiorno a tutti.
    Lo scenario è questo:
    Ho un form (form1) con una serie di "private sub" e una variabile "public as string".
    Form1 contiene una gridview alla quale ho aggiunto delle funzionalità con classi friend. Questo è il codice:
    codice:
        Friend Class DataButtonD1
            Inherits GridButtonXEditControl
    
            Public Sub New()
    
                AddHandler Me.Click, AddressOf DataButtonD1Click
    
            End Sub
    
    #Region "DataButtonD1Click"
    
            Private Sub DataButtonD1Click(ByVal sender As Object, ByVal e As EventArgs)
    
                Dim s As String = TryCast(EditorCell.Value, String)
    
                If s IsNot Nothing Then
                    Dim form2 As New frmDettaglioPartite(EditorCell.GridRow.Item("cash_flow_flag"), Parametro1)
                    form.ShowDialog()
                End If
            End Sub
    
    #End Region
        End Class
    Il mio problema è questo:
    1) Vorrei passare come parametro (parametro1) al form2 il valore di una variabile di classe form1 ma non so in che modo farci riferimento.
    2) Allo stesso modo, alla chiusura del form2, vorrei eseguire una sub del form1 ma anche qui non ci riesco.
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Scusa, tu passi due oggetti nella tua chiamata :
    codice:
    Dim form2 As New frmDettaglioPartite(EditorCell.GridRow.Item("cash_flow_flag"), Parametro1)
    Come fai a passare il primo ? Allo stesso modo passi il secondo.
    Devi utilizzare un costruttore del frmDettaglioPartite( ..... ) se vuoi mantenere la chiamata
    New ....
    Altrimenti ci sono altri sistemi ....
    Ciao, Brainjar

  3. #3
    Prima di tutto grazie per l'interesse. Sono disperato!!!!
    Scusa se non sono stato chiaro.
    Allora...
    il primo parametro riesco a passarlo perchè fa parte della classe "Friend Class DataButtonD1".
    Il secondo parametro invece appartiene al form che ospita il pannello che a sua volta ospita la datagridview (dove si trova la classe DataButton1).
    In pratica se quel codice fosse scritto in un bottone del form principale, il parametro sarebbe "Me.variabile". Ma in questa situazione non riesco a puntare all'oggetto "Me" (il form). Spero di essermi spiegato un pochino meglio.

  4. #4
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Allora per passare il form1 alla form2 fai così :
    Nella form2 inserisci una proprietà di tipo Form
    codice:
        Private newForm As Form
        Public Property formUno() As Form
            Get
                Return newForm
            End Get
            Set(ByVal value As Form)
                newForm = value
            End Set
        End Property
    Nel metodo che gestisce il click del bottone passa il form1 utilizzando Me in questo modo :
    codice:
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim form2 As New Form2()
            form2.formUno = Me
        End Sub
    Da questo momento all'interno del form2 potrai utilizzare tutto quanto di pubblico hai nel form1, proprietà e metodi.
    Ciao, Brainjar

  5. #5
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Scusa ma avevo fatto poca attenzione al frammento di codice che avevi postato.
    Allora, il problema è che il bottone non è del Form1. Ma il bottone sta in un altro oggetto, presumibilmente di tipo form o simile.
    Ok, il meccanismo è lo stesso. Devi dotare l'oggetto sul quale 'vive' il bottone di una proprietà
    che farà riferimento al Form1 o, in generale, all'oggetto che vorrai passare.
    Quindi il blocco :
    codice:
        Private newForm As Form
        Public Property formUno() As Form
            Get
                Return newForm
            End Get
            Set(ByVal value As Form)
                newForm = value
            End Set
        End Property
    lo inserisci dove 'passa' il form.
    Ciao, Brainjar

  6. #6
    Scusa il ritardo nella risposta.
    Ho capito il meccanismo che suggerisci, ma non riesco a metterlo in atto.
    Per farti capire meglio allego un immagine.

    La struttura è pressapoco la seguente :
    Form->TableLayoutPanel->TabControl->GridView->Bottone "visualizza"

    Il bottone "visualizza" è il famoso databutton del codice che ho postato in precedenza.
    Si tratta di una classe friend del gridview.
    Quando clicco sul bottone, ho la necessità di reperire alcune informazioni contenute nel form1. Come suggerito, ho creato la property nella classe del bottone, ma non riesco a passare il form1 come parametro.
    Se non risolvo, pensavo di provare a gestire il tutto a livello + alto, ovvero direttamente con gli eventi del form1.

    Grazie.
    Immagini allegate Immagini allegate

  7. #7
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Scusa ma nel percorso :

    Form->TableLayoutPanel->TabControl->GridView->Bottone "visualizza"

    Il Form2 è il Form ? Se si, il bottone ha il Parent che è il GridView, che a sua volta ha il Parent
    che è il TabControl che ha per Parent il TableLayoutPanel che ha per Parent il Form.
    Quindi il Form2 altro non è che il Parent più alto nella gerarchia ...

    Ancora non è chiara la relazione tra i due Form. Dove e come si colloca Form1 ? Dovresti fare un po' di chiarezza .....

    Hai impostato parte del lavoro separando la logica dai controlli, continua su questa strada allora ...
    Ciao, Brainjar

  8. #8
    Hai ragione, ho fatto un po' di confusione. In realtà i 2 form sono un altro caso (ma il problema era sempre lo stesso). Comunque GRAZIE 1000 ho risolto. Ho usato la catena di parent nel caso del bottone nella gridview e le property nel caso dei 2 form. Mi sei stato utilissimo. Ora, dopo una giornata di esperimenti, ho le idee molto più chiare.

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.