Problemi di accesso ai dati presenti in splitcontainer.panel

di il
5 risposte

Problemi di accesso ai dati presenti in splitcontainer.panel

Mi scuso per le mie numerose richieste di aiuto, ma quando ho difficoltà … non ho altri -se non questa comunità- a cui rivolgermi.

Ecco il codice su cui ho problemi.

Creo uno splitcontainer : nel primo panel aggiungo un form (ListaContatti) che contiene una DGV che espone una lista di contatti; nel secondo, un altro form (Rubrica) con i dettagli del contatto (nome,email,telefono,ecc.)

Ora, quando clicco su una riga di ListaContatti (panel1) , mi aspetto che il mi venga selezionato lo stesso record nel form Rubrica (panel2), ma non succede nulla. Ecco. Questo è il mio quotidiano problema. Grazie.

Public Class frmMail
   Dim sc As SplitContainer
   Dim sc2 As SplitContainer
   Dim sc3 As SplitContainer
   Friend WithEvents tv As TreeView
   Friend WithEvents miaDGV As DataGridView
   Friend WithEvents mioForm As Form
   Dim indice As Integer
   Private Sub btnContatti_Click(sender As Object, e As EventArgs) Handles btnContatti.Click
       Me.Controls.Remove(sc)
       Me.Controls.Remove(sc2)
       Me.Controls.Remove(sc3)
       sc = New SplitContainer
       sc.Orientation = Orientation.Vertical
       sc.Height = 700
       sc.Width = 1000
       sc.SplitterDistance = 400
       sc.BorderStyle = BorderStyle.Fixed3D
       sc.Location = New Point(100, 20)
       Me.Controls.Add(sc)

       Dim frm As New ListaContatti
       frm.TopLevel = False
       frm.WindowState = FormWindowState.Normal
       frm.Dock = DockStyle.Fill
       frm.Visible = True
       sc.Panel1.Controls.Add(frm)
       Dim frm2 As New Rubrica
       frm2.TopLevel = False
       frm2.WindowState = FormWindowState.Normal
       frm2.Dock = DockStyle.Fill
       frm2.Visible = True
       sc.Panel2.Controls.Add(frm2)
       miaDGV = CType(sc.Panel1.Controls("ListaContatti").Controls("dgv"), DataGridView)
       mioForm = CType(sc.Panel2.Controls("Rubrica"), Form)
   End Sub
   Private Sub miaDGV_Click(sender As Object, e As EventArgs) Handles miaDGV.Click
       indice = miaDGV.CurrentRow.Cells(1).Value
       ContattiBindingSource.Position = indice
   End Sub

5 Risposte

  • Re: Problemi di accesso ai dati presenti in splitcontainer.panel

    In attesa di qualche aiuto, ho continuato a fare tentativi per tutto il pomeriggio e sono giunto alla conclusione che nei splicontainer non si possono aggiungere e gestire forms.
    Del resto, neanche la wizard procedura lo consente.
    Allora, di santa pazienza mi sto scrivendo il codice sia per la DGV che per visualizzare le textbox.
    Pensavo di potermi semplificare la vita e invece...ciccia.
    Grazie a tutti voi per esserci.

  • Re: Problemi di accesso ai dati presenti in splitcontainer.panel

    Esattamente cosa intendi per form?

    Poi, usare uno splitcontainer significa usare un componente formato da due pannelli ridimensionabili considerati come un unico pannello (al crescere dell'uno diminuisce l'altro).

    Questo non significa che splitpanel sa cosa conterranno i due pannelli.

    Se vuoi che in un pannello sia visibile un elenco e nell'altro il dettaglio devi mettere la griglia con il solo campo lista, per esempio “denominazione” e nell'altro i controlli dei campi della tabella. Cosa che faresti con un normalissimo form (inteso come finestra) dove hai una griglia che mostra la colonna x della tabella  e n controlli edit (anche impostati read only) che mostrano gli altri campi.

    Listacontatti e rubrica sono due tabelle relazionate?

    Dal quesito posto non si capisce cosa intendi fare e se, per farlo, devi necessariamente passare per vba.

  • Re: Problemi di accesso ai dati presenti in splitcontainer.panel

    23/09/2024 - Jan ha scritto:


    ho continuato a fare tentativi per tutto il pomeriggio e sono giunto alla conclusione che nei splicontainer non si possono aggiungere e gestire forms.

    Esatto. Quel che farei io è:

    1. Creare un controllo personalizzato che eredita da DGV;
    2. Creare un controllo personalizzato che sia composto da TextBox e Label per il dettaglio. In quest'ultimo predisporrei una variabile di tipo “Contatto” e scriverei la logica di binding tra i i controlli e le proprietà;
    3. userei i controlli sia nelle Userform che hai già creato, sia nello SplitContainer.

    In questo modo, fai il lavoro una volta sola. Quando cambi la lezione nella DGV, modifichi il riferimento nella proprietà del controllo di cui al punto 2 e fa tutto da solo.

  • Re: Problemi di accesso ai dati presenti in splitcontainer.panel

    23/09/2024 - Jan ha scritto:


    indice = miaDGV.CurrentRow.Cells(1).Value ContattiBindingSource.Position = indice

    Currentrow?? Cells().value?? Non riesci a prelevare direttamente dal puntatore della tabella?

    Ma relazionarle è complicato? 

    Se tabella1.campo=miavariabile=tabella2.campo allora puoi relazionare le due tabelle senza complicarti la vita.

  • Re: Problemi di accesso ai dati presenti in splitcontainer.panel

    Prima di ogni cosa è doveroso che io mi scusi per il ritarso con cui rispondo. A dire il vero, dopo aver dichiarato la mia resa, non mi attendeva ulteriori interventi.

    Grazie quindi a sihsandrea e Sgrubak per i contributi alla mia soluzione. 

    Ho risolto generando in runtime (ho questa necessitò perchè la splitcontainer conterrà di volta in volta ridimensionamenti e sostituzioni integrali di contenuti ) i miei controlli. 

    25/09/2024 - sihsandrea ha scritto:


    Currentrow?? Cells().value?? Non riesci a prelevare direttamente dal puntatore della tabella?

    E no, perchè lavoravo su due diversi forms (superficie su cui si trascinano controlli) e cercavo di forzare lo spostamneto del mio bindingsource. 

Devi accedere o registrarti per scrivere nel forum
5 risposte