Jollyman (Normal User)
Newbie
Messaggi: 9
Iscritto: 01/11/2010
|
Salve a tutti,
ho un grosso problema:non so modificare le proprietà di un controllo di un Form da una classe.
In pratica ho un form e una classe per gestire un socket. Quando metto il socket in ascolto (Listen) su una porta vorrei che nel form(Form1) venisse modificato il testo(Text) di un pulsante(Button1).
Ho provato con vari codici...ad esempio:
Codice sorgente - presumibilmente C# / VB.NET |
Form1 f1=new Form1();
f1.Button1.Text="Testo";
//va in errore perché il form esiste già ed è impossibile crearlo
|
ho anche provato con
Codice sorgente - presumibilmente C# / VB.NET |
Form1 f1;
f1.Button1.Text="Testo";
//va in errore e dice che :"Riferimento a un oggetto non impostato su un'istanza di oggetto."
|
Come faccio? |
|
arack95 (Member)
Pro
Messaggi: 144
Iscritto: 15/11/2010
|
Premetto che non uso .NET da non so quanto e che forse sto per dire una cazzata(molto probabilmente) comunque hai provato ad usare this?
this->Button1.Text="Testo";
Spero che vada
|
|
Jollyman (Normal User)
Newbie
Messaggi: 9
Iscritto: 01/11/2010
|
No, non funziona perché se il lavoro avviene nella classe this indicherà la classe e non il form.
|
|
arack95 (Member)
Pro
Messaggi: 144
Iscritto: 15/11/2010
|
Non è che mi faresti vedere il source? Magari con visual studio riesco a combinare qualcosa.
Ultima modifica effettuata da arack95 il 28/11/2010 alle 18:36 |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da arack95:
Premetto che non uso .NET da non so quanto e che forse sto per dire una cazzata(molto probabilmente) comunque hai provato ad usare this?
this->Button1.Text="Testo";
Spero che vada |
la fantasia di arack non ha limiti, però io sono dell'idea che al posto di sparare cagate uno dovrebbe starsene zitto.
ad ogni modo per ottenere l'istanza del form aperto basta utilizzare Application.OpenForms["NomeForm"].
Da quell'istanza puoi accedere ai controlli di cui hai bisogno, ovviamente prima castando il Form di ritorno al tipo del form di ritorno, in questo caso Form1.
http://msdn.microsoft.com/en-us/library/system.windows.for ...
Ultima modifica effettuata da HeDo il 28/11/2010 alle 19:23 |
|
nihal (Ex-Member)
Pro
Messaggi: 109
Iscritto: 12/04/2010
|
Oppure quando istanzi la classe che gestisce la socket passi crei un costruttore personalizzato e ti fai passare l'istanza del form che ti interessa...
|
|
arack95 (Member)
Pro
Messaggi: 144
Iscritto: 15/11/2010
|
Postato originariamente da HeDo:
la fantasia di arack non ha limiti, però io sono dell'idea che al posto di sparare cagate uno dovrebbe starsene zitto.
|
Calmo Hedo, mica mordo. Non siamo mica nati imparati, neanche tu, ricordalo. Volevo solo aiutare siccome nessuno rispondeva, magari "azzeccavo la risposta", tra l'altro l'ho detto che probabilmente stavo per dire una cazzata.
Non capisco questo tuo atteggiamento ostile verso me |
|
Jollyman (Normal User)
Newbie
Messaggi: 9
Iscritto: 01/11/2010
|
Non accede lo stesso ai controlli. Rende disponibile la modifica delle proprietà e varie cose del Form1 tranne che ai controlli (listBox, Button, label)
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da Jollyman:
Non accede lo stesso ai controlli. Rende disponibile la modifica delle proprietà e varie cose del Form1 tranne che ai controlli (listBox, Button, label) |
perchè i controlli sono dichiarati come private, basta che vai nel designer.vb e metti public al posto di private sui controlli che vuoi modificare dall'altro form.
@Arack: nessuno è nato imparato, non stiamo parlando di questo. Fidati che l'atteggiamento di "la sparo tanto per" ti porterà solo problemi in qualsiasi ambito cmq io non ho atteggiamenti ostili verso nessuno, al massimo ho atteggiamenti ostili verso atteggiamenti stupidi |
|