[C#] Gestire controlli Form1 da Form 2

lunedì 28 giugno 2010 - 13.58

StefyGraf Profilo | Newbie

Ciao a tutti, sono nuovo su questo forum.
Mi servirebbe un aiuto con C#. Ho iniziato da poco e sto creando un piccolo programma, ma non riesco a fare una cosa: quando sono nel Form 2, vorrei cambiare il testo della TextBox1 che sta nel Form 1. In VB.NET bastava scrivere il nome del controllo che volevo modificare e subito appariva, invece il C# non appare niente. Spero che avete capito!
Grazie mille per l'aiuto, in anticipo! XD

freeteo Profilo | Guru

Ciao,
ma tu hai accesso alla Form1 da codice? Intendo o tramite istanza statica (singleton) o tramite variabile.
Se tu hai creato un oggetto di tipo Form1 e vuoi avere accesso ai controlli, devi da designer modificare la proprietà "Modifiers" portandola a "public" dei controlli che ti servono e li trovi già nell'Intellisense.

Altrimenti una cosa analoga (ma a mio avviso migliore per tutta una serie di motivi) puoi lavorare con le proprietà della Form1, che poi ti rimappino sul controllo fisico della form...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

StefyGraf Profilo | Newbie

Avere accesso al Form 1 tramite codice.

freeteo Profilo | Guru

>Avere accesso al Form 1 tramite codice.
ti ho dato già 2 alternative per farlo

Forse però a te basta allora implementare il pattern singleton per form1, in modo da avere una (e una sola) istanza delle form e lavorare sempre con quella:
partial Class Form1 : Form { static Form1 instance; public static Form1 Instance { get { if(instance == null) instance = new Form1(); return instance; } } .... }
come vedi viene fatta una proprietà dello stesso tipo e quindi è simile a vb6 quando chiamavi la form direttamente.
Adesso, quando la devi visualizzare, scriverai"Form1.Instance.Show()" oppure cmq ci puoi accedere sempre da codice usando l'istanza.

Infine, se è la prima che devi lanciare all'avvio, ti basta modificare "Program.cs" in modo che venga aperta quella e non una nuova:
... Application.Run(Form1.Instance); ...

Non so se era questo che intendevi...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

StefyGraf Profilo | Newbie

Scusa se ti ho risposto un po' in ritardo, ma grazie mille! era proprio quello che cercavo!
mi serve ancora un aiutino!
uso un database Access (.mdb) per i miei programmi e mi sono scordato che su questo mi serve un TabControl. Vorrei creare il tabcontrol in Access e quando vado sul visual studio ad importare il database, invece che trascinare sul form una datagridview, un tabcontrol così mi salverà tutte le pagine che creo o elimino.

grazie ancora!
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5