PDA

View Full Version : [VB] Chiamata di funzione su un altro Form


race2
10-09-2002, 15:10
VB.NET,


Questo e' il codice che uso per avviare una funzione che si trova su un altro Form del progetto:

MyModule1.Form1.PopoloUrl()

ma mi da errore........

cosa sbaglio???

tas
10-09-2002, 16:22
Che errore ti da? Quando fai la chiamata al metodo, il form è stato creato?

race2
11-09-2002, 12:39
http://forum.html.it/forum/showthread.php?s=&threadid=310920

tas
11-09-2002, 13:52
Si, forse ho capito quello che vuoi fare...

Hai due form, Form1 dove hai una ListView e una funzione pubblica chiamata "PopoloUrlSerch", e Form2 dove mostri il dettaglio del record selezionato sul Form1.

Vorresti fare in modo che dal Form2 sia possibile lanciare l'aggiornamento della ListView del Form1... giusto?

Se è così il problema è che Form2 non conosce l'istanza di Form1, quindi il tentativo da te proposto:

Private Sub btInserisci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btInserisci.Click
Dim f As New Form1()
f.PopoloUrl()
End Sub

non funziona in quanto hai creato una nuova istanza di Form1!!!

Per risolvere il problema puoi fare diverse cose. La più corretta (nel senso OOP) è quella di passare la variabile oggetto di Form1 durante la creazione di Form2.
In Form1:

Dim f As Form2

f = New Form2(Me)

f.Show

In Form2:

'dichiarazione membri
Private m_owner As Form1

'costruttore
Public Sub New(myowner As Form1)
Me.New()

m_owner = myowner
End Sub

...

Private Sub btInserisci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btInserisci.Click
m_owner.PopoloUrl()
End Sub

tas
11-09-2002, 14:08
Ravanando ho scoperto un'altra tecnica, ancora più semplice, che fa uso della proprietà Owner:

In Form1:

Dim f As Form2

f = New Form2()
f.Owner = Me
f.Show()

In Form2:

Private Sub btInserisci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btInserisci.Click
Dim f As Form1

f = Me.Owner
f.PopoloUrl()
End Sub

race2
11-09-2002, 14:34
OK vado a provare subito, molte grazie !!!!!!!!

Scusami ho un problemino che mi fa molto fumare, voglio un semplice form a tutto schermo,

quindi setto la proprieta' "WindowState" su "Maximize"

eseguo il progetto e mi apre un Form a tutto schermo, quindi tutto OK,

mentre se clicco nel'eseguibile che ho creato mi mantiene la dimenzione della grandezza reale del form, cioe:

il mio form e' 800X600px con settato WindowsState=Maximized

il mio monitor e' a 1280X1024px e voglio che sia aperto a tutto schermo non a 800X600px....

come devo fare ???