Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Lanciare metodo su una form di destinazione diversa da quella attiva.
giovedì 19 giugno 2008 - 14.26
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
AndreaBelmonte
Profilo
| Newbie
33
messaggi | Data Invio:
gio 19 giu 2008 - 14:26
Ciao,
sto sviluppando una form application su framework .Net C# 1.1.
La mia applicazione lancia una serie di form per eseguire diverse tipologie di operazioni.
Avrei necessità, da una precisa form - che esegue degli aggiornamenti dati - di lanciare un metodo che si trova in un'altra delle form aperte, affinchè aggiorni una lista riepilogativa di dati.
Ho provato a rendere questo metodo pubblico, ma mi da problemi nell'utilizzare un datagrid (il metodo aggiorna i contenuti di un datagrid), anche se provo - stupidamente, lo so - a dichiarare il datagrid come public.
Esiste qualche soluzione a questo problema?
Grazie,
Andrea Belmonte
www.andreabelmonte.com
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
ven 20 giu 2008 - 08:12
Prendi il codice che vuoi eseguire da qualsiasi punto, mettilo in una classe apposita, dichiara il metodo come static.
AndreaBelmonte
Profilo
| Newbie
33
messaggi | Data Invio:
ven 27 giu 2008 - 09:44
Ciao
e grazie per la risposta.
Ho provato a fare quanto mi suggerisci, ma il grosso problema che ho è che mi è impossibile vedere all'interno del metodo static il datagrid che ho nella form che mi interessa.
Ho fatto un paio di prove, rendendo public static il metodo che aggiorna il datagrid, direttamente all'interno del cs del form che ha il controllo, ma mi è impossibile vederlo. In seconda battuta, ho inserito all'interno di una classe il metodo static AggiornaDataGrid, cui passare come parametro il datagrid di destinazione: anche in questo caso, dalle altre form vedo naturalmente il metodo, ma non posso assolutamente fargli "vedere" il datagrid.
Puoi darmi qualche indicazione di più?
Grazie,
Andrea
Andrea Belmonte
www.andreabelmonte.com
Lucifel
Profilo
| Junior Member
104
messaggi | Data Invio:
ven 27 giu 2008 - 09:58
Questo è un problema che ho riscontrato anche io con il framework 1.1. Con quelli successivi gli passi l'oggetto pubblico e te lo aggiornano tranquillamente.
Io ho risolto passandogli la form come parametro. Mi spiego meglio. Metto la datagrid pubblica. Quando apro la form A (quella che chiama il metodo aggiorna gli passo un'istanza della form B, o l'istanza attiva se è già aperta) e quando faccio aggiorna ho già l'elemento quindi:
A.Bottone.click()
{
Aggiorna(this.B.datagrid1)
}
O una cosa del genere. Lo so che non è per niente elegante (anche a me fa un po' "schifo") ma nel framework 1.1 è il meglio che sono riuscito a fare.
Sarebbe ancora meglio se il metodo aggiorna l'avesse la form B così non dovresti nemmeno avere la datagrid pubblica:
A.Bottone.click()
{
this.B.AggiornaDatagrid(...) // dove sui puntini ci sono i parametri che ti servono per aggiornare la datagrid
}
Spero ti sia servito a qualcosa.
Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------
AndreaBelmonte
Profilo
| Newbie
33
messaggi | Data Invio:
ven 27 giu 2008 - 10:17
Ciao e grazie.
Proverò sicuramente, anche se a spanne mi sembra di ricordare di aver avuto qualche problema anche nel dichiarare come public il datagrid.
Andrea Belmonte
www.andreabelmonte.com
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
sab 28 giu 2008 - 15:01
Dipende da come fai la chiamata ma potresti anche definire nella classe un membro shared per la datagridview, membro che dovrai assegnare all'entrata nella form dove esiste.
Questo piuttosto di dichiarare l'intera form come shared.
Enne
Profilo
| Junior Member
59
messaggi | Data Invio:
mar 1 lug 2008 - 03:48
Ho letto un pò in ritardo ma spero di esserti utile ancora.
Faccio l'esempio di 2 Form, Form1 e Form2, dal Form2 vuoi richiamare un metodo (testMethod) che sta in Form1 quindi:
// Form2
public partial class Form2 : Form
{
Form1 form1;
public Form2(Form1 form)
{
InitializeComponent();
form1 = form;
}
}
// Form1
Form2 form2 = new Form2(this);
form2.ShowDialog(); //presuppongo che da form1 tu faccia visualizzare form2
// Ora da Form2 richiami dove ti serve il testMethod (che ovviamente dovrà essere public):
form1.testMethod();
Saluti,
Rocco Verrastro
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !