Popolare ListBox da un altro form

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Popolare ListBox da un altro form

    DanieleG ha scritto:


    Brevemente:
    questa dll, si occupa di dialogare con una bilancia.
    é composta da 3 form (al momento), che sono:
    il form principale composto da un Panel dove all'interno c'è una Label che funge da "display", ovvero dove visualizzo il peso rilevato dalla bilancia.
    Da questo form principale, tramite menù popup richiamo un form per l' impostazione dei parametri di comunicazione (se seriale o rete, porta COM oppure IP e porta, timer di interrogazione ecc ecc), che li scrive in un file xml.
    Allo stesso modo volevo richiamare il form in causa della diagnostica.
    La DLL ha delle Function dichiarate Pubblic. tra le quali, quella dove inizializzo, andando a leggere il file xml, il modo di comunicazione e abilito il timer che inizia a inviare la richiesta.

    Per cui, in un progetto nuovo, prendo la mia dll dalla casella degli strumenti e la metto sul form (per cui vedo già il mio display), dopodichè richiamo la funzione che inizializza (descritta sopra), e inizio a visualizzare il peso.

    Grazie
    Saluti

    DG
    Interessante, ma ancora non so come crei la dll, che tipo di progetto apri in VS e se non è winform, come aggiungi i form.
    Per spiegarmi meglio mi dovresti dare delle info per replicare il problema, senza scomodare la bilancia, tanto credo che se invece di: CB_frmDebug.lstDebug.Items.Add(sDati), scrivi CB_frmDebug.lstDebug.Items.Add("test"), la listbox non si riempie lo stesso.
  • Re: Popolare ListBox da un altro form

    Uso VB 2008
    Faccio: nuovo progetto --> Libreria di classi
    poi da esplora soluzioni faccio --> aggiungi windows form

    Se credi ti posso inviare per email il progetto, non sono cose segrete
  • Re: Popolare ListBox da un altro form

    DanieleG ha scritto:


    Uso VB 2008
    Faccio: nuovo progetto --> Libreria di classi
    poi da esplora soluzioni faccio --> aggiungi windows form

    Se credi ti posso inviare per email il progetto, non sono cose segrete
    Non credo che serva, prima proviamo con progetti di test.
    Ho creato un progetto Libreria di classi, nome progetto: DueFormDLL.
    Ho aggiunto due form: Form1dll e Form2dll, eliminato class1
    Form1.jpg
    Form1.jpg


    Form2.jpg
    Form2.jpg

    in Form1dll.vb ho messo:
    
    Imports System
    Imports System.Windows.Forms
    
    Partial Public Class Form1dll
        Dim f2 As New Form2dll
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            For a = 1 To 5
                f2.ListBox1.Items.Add("da Form1dll" & a)
            Next
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            f2.Show()
            f2.Visible = False
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            If f2.WindowState = FormWindowState.Minimized Then
                f2.WindowState = FormWindowState.Normal
            Else
                f2.Visible = Not f2.Visible
            End If
        End Sub
    End Class
    
    in Form2dll.vb ho messo:
    
    Imports System
    Imports System.Windows.Forms
    
    Partial Public Class Form2dll
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            For a = 1 To 5
                ListBox1.Items.Add("da Form2dll " & a)
            Next
        End Sub
    
        ' rende invisibile il form2 senza chiuderlo
        Private Sub Form2_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
            e.Cancel = True
            Me.Visible = False
        End Sub
    
    End Class
    
    Compilato ed ottenuto: DueFormDLL.dll

    Ho aperto un nuovo progetto winform di nome DueFormDLLuso, aggiunto il riferimento a DueFormDLL.dll
    il Form1 l'ho chiamato Main:
    Main.jpg
    Main.jpg

    in Form1.vb ho aggiunto:
    
    
    Public Class Form1
    
        Dim f1dll As DueFormDLL.Form1dll
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Try
                f1dll.Show()
            Catch
                f1dll = New DueFormDLL.Form1dll
                f1dll.Show()
            End Try
        End Sub
    
    End Class
    
    Compilato ed eseguito DueFormDLLuso il form Main appare e se clicco apridll, form1dll si apre, se da form1dll clicco Form2dll, il form2dll si apre. se clicco il tasto listbox presente in form1dll, la listbox si aggiorna, se premo il tasto listbox presente in form2dll, la listbox si aggiorna.
    Se chiudo form2dll, lo posso riaprire da form1dll
    Da form1dll posso aprire e chiudere form2dll
    Se chiudo form2dll e form1dll, da main posso riaprire un nuovo form1dll
    Sembra che funzioni tutto, controlla se nel tuo codice hai tralasciato qualcosa.
    mainform1form2.jpg
    mainform1form2.jpg

  • Re: Popolare ListBox da un altro form

    Bingo !
    mi hai risolto il problema.
    In pratica l'errore (banale...) era che istanziavo il form debug, nell'evento click del popup menù, e non all'inizio della classe, per cui "visibile" a tutta la classe.
    Appena ho visto il tuo codice ho capito subito.
    Purtroppo mi fossilizzavo su altre cose e pura vendo l'errore sotto gli occhi, non lo vedevo:(
    Grazie 1000 per il tempo che mi hai dedicato.
    Un saluto

    DG
  • Re: Popolare ListBox da un altro form

    DanieleG ha scritto:


    Bingo !
    mi hai risolto il problema.
    In pratica l'errore (banale...) era che istanziavo il form debug, nell'evento click del popup menù, e non all'inizio della classe, per cui "visibile" a tutta la classe.
    Appena ho visto il tuo codice ho capito subito.
    Purtroppo mi fossilizzavo su altre cose e pura vendo l'errore sotto gli occhi, non lo vedevo:(
    Grazie 1000 per il tempo che mi hai dedicato.
    Un saluto

    DG
    Capita. Ero convinto che la bilancia non c'entrava nulla
Devi accedere o registrarti per scrivere nel forum
19 risposte