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
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:
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.