|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2010
Messaggi: 35
|
[c#] Oggetti pubblici
Buonasera a tutti.
Sto programmando in C# ma mi è sorto un problema. Da un form devo modificare la proprietà text di un textbox che si trova in un altro form. Come posso fare? |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
Codice:
NOMEFORM.TextBox.Text = "CIAO"; |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2001
Messaggi: 1049
|
ti conviene creare un metodo public nella form interessata dalla modifica della texbax
una cosa tipo Codice:
public void modificaTesto(string text)
{
//così puoi inserire una qualche validazione prima di effetture l'iserimento
miaTextBox.Text = text;
}
Codice:
var form = new miaForm();
form.Show();
form.modificaTesto("la stringa da inserire");
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Codice:
var form = new miaForm();
form.Show();
form.modificaTesto("la stringa da inserire");
Questa cosa non me la ricordavo :| Codice:
NomeForm oggetto = new NomeForm()
oggetto.Show();
oggetto.modificaTesto("BUBBA");
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2001
Messaggi: 1049
|
puoi usare var grazie all'inferenza del tipo. prova pure se hai dubbi.
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
No no, non ho dubbi, ci mancherebbe, non l ho mai usato (e non uso C# da un bel po di tempo...); ma da sempre o dalla versione 3.0 del linguaggio?
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2001
Messaggi: 1049
|
dal 3.0
in realtà non cambia nulla in quanto la variabile è cmq fortemente tipicizzata, solo che è il compilatore a determinarne il tipo. |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jun 2010
Messaggi: 35
|
Grazie mille, la funzione pubblica so farla, chissà perchè non ci avevo pensato adesso provo e vi faccio sapere
EDIT: Ho provato a fare come ha detto sneeze, la cosa piu ovvia non funziona. Il form da modificare è disattivato in secondo piano ma si vede anche se non si puo cliccarci sopra. Quando faccio var form =new form1() lui mi crea un nuovo form identico a quello disabilitato ma questa volta lo modifica a dovere. Io vorrei modificare quello in secondo piano, non crearne uno nuovo Ultima modifica di Andrea993 : 25-08-2010 alle 13:31. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
molto probabilmente apri il secondo form dal primo con uno showDialog.
Ti suggerisco di modificare il codice settando la proprietà Owner del secondo form con l'istanza del form che poi viene disabilitato prima della chiamata a showDialog (o quello che è). Non so se mi hai capito
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jun 2010
Messaggi: 35
|
Praticamente dici di spegner il primo form e subito dopo avviare quello modificato?
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
mmm aspè scrivo un po di codice...
Supponiamo che il form chiamante sia di tipo Form1 e il "popup" di tipo Form 2 allora dicevo di fare una cosa tiop: In Form1 Codice:
Form2 newForm=new Form2(); newForm.Owner=this; //questa è la parte che dovresti aggiungere newForm.Show(); Codice:
((Form1)Owner).ModificaTesto("TESTO");
|
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Jun 2010
Messaggi: 35
|
Sei un genio...
Non sapevo esistesse form owner. Saresti così gentile da spiegarmi esattamente a cosa serve Owner. A vederlo sembra che il form diventa legato all'altro ma cosa fa esatamente? Ultima modifica di Andrea993 : 26-08-2010 alle 01:13. |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Aug 2001
Messaggi: 1049
|
Esatto,
non devi aprire un altro form se già ce l'hai. devi solo assicurarti di avere un riferimento a quel form nel form dal quale vuoi lanciare la modifica. Tutto questo se hai intenzione di usare variabili o metodi pubblici. Francamente forse ti consiglierei di guardare un pò delegati ed eventi. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:44.




















