Dal form2, alla pressione di un bottone, devo ripopolare un ListView nel form1.
Come potrei fare?
Confido in una vostra risposta!!!
Dal form2, alla pressione di un bottone, devo ripopolare un ListView nel form1.
Come potrei fare?
Confido in una vostra risposta!!!
In VB6 si fa così:
form1.listview.visible = false' per esempio
per il NET dovrebbe essere lo stesso.
Ciao, fammi sapere
magari! Con .NET le cose sono un pochino diverse...maledettamente diverse!!!
Ho trovato una soluzione, visto che potrebbe essere utile anche ad altri posto qui il codice
Il problema era come ripopolare un listview del form1 alla pressione del bottone del form2
Si possono usare gli eventi:
Fuori da ogni blocco nel Form1
Nel Form2codice:Dim WithEvents f2 As New Form2()
Sempre nel Form2codice:Public Class Form2 Inherits System.Windows.Forms.Form ' Dichiariamo l'evento Event btn_click()
Attenzione: il nome dell'evento deve differire dal nome della subcodice:Private Sub btnOK(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles btn_ok.Click ' Codice del bottone RaiseEvent btn_click() End Sub
Nel Form1
In pratica il form1 "ascolta" l'evento btn_click del form2 ed esegue la subcodice:Private Sub f2_btnPress() Handles f2.btn_click 'Codice della sub End Sub
Sperando che possa aiutare qualcuno vi saluto!
La differenza sta nel fatto che VB.NET è orientato agli oggetti.
Questo significa che ciascun form di cui disponi in realtà è una classe, che funge da "modello" comportamentale (attraverso i metodi) e le caratteristiche (proprietà).
Quando vuoi utilizzare un form, devi crearne un'istanza usando l'operatore New.
"Creare un'istanza" significa costruire di fatto un oggetto che rispecchia metodi e proprietà definite nella classe, in questo caso la classe del form.
Tutti i componenti e i controlli che hai inserito nel form contribuiscono ad arricchire la suddetta classe, dotando il tuo form di nuovi elementi che la rendono diversa, anzi più specifica (per usare un termine consono).
Detto questo, quando vuoi disporre di un form, sicuramente scriverai qualcosa del tipo:
Sostanzialmente, dichiari una variabile adatta a contenere un riferimento all'istanza della classe del form che arrivi a creare.codice:Dim MyFormInstance As New MyFormClass
Supponendo di eseguire questo codice, relativo al form secondario in cui è presente la ListView, alla pressione di un pulsante posizionato sul clic del primo form, e supponendo che il riferimento di cui sopra venga memorizzato in una variabile privata che fa parte della classe del form primario, potresti scrivere qualcosa del tipo:
In poche parole, il form primario che ha creato il secondario mantiene un riferimento a quest'ultimo oggetto; il form secondario contiene un controllo ListView che ha nome MyListView; quando si preme un pulsante sul form primario, si utilizza il riferimento SecondForm al form secondario concatenando il nome del controllo ListView e accedendo quindi alle proprietà di tale controllo.codice:' ... SecondForm.MyListView.Items.Clear; ' ...
Purtroppo si tratta di concetti nuovi per chi è abituato a programmare con il classico VB (6 e precedenti), in cui ogni form ha un nome e con tale nome si identifica automaticamente classe e oggetto; ciascun form è già disponibile e non deve essere creato.
Spero di aver chiarito un po' le idee, anche se la programmazione ad oggetti è un paradigma che deve essere assimilato per poter essere realmente compreso e non è facile spiegarlo in poco spazio su un forum.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
e se faccio dim frm2 as new frm2
frm2.listview.................
perche non funziona ????
Hai inserito un controllo ListView sul form secondaria? Inoltre, non mi sembra un colpo di genio utilizzare per la variabile un nome uguale identico a quello della classe...non mi stupisce che non funzioni.Originariamente inviato da cassano
e se faccio dim frm2 as new frm2
frm2.listview.................
perche non funziona ????![]()
Inoltre, il compilatore senz'altro non dice "non funziona" ma si esprime con un messaggio di errore ben dettagliato che, solitamente, permette di risalire con facilità all'errore.
Specialmente con .NET, gli errori non sono mai stati così esplicativi e a volte includono anche la soluzione.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
be non e proprio cosi ma ora te la metto tutta
dim frm2 as new form2
frm2.textbox1.text="ciao"
cosi non lo prende perche ???
Se il codice che hai riportato qui non è uguale a quello che hai scritto nel tuo progetto, come faccio a trovare l'errore?Originariamente inviato da cassano
be non e proprio cosi ma ora te la metto tutta
Sei sicuro di avere una TextBox1 sul secondo form, vero?Originariamente inviato da cassano
dim frm2 as new form2
frm2.textbox1.text="ciao"
cosi non lo prende perche ???
In caso affermativo, qual è l'errore che ti restituisce?
Non si può dire "non funziona" o "non lo prende", occorre riportare l'errore completo restituito dal compilatore!
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...