|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
[C#]aprire una nuova form
Salve a tutti,
vorrei sapere come fare ad aprire una nuova form in linguaggio C#. Mi spego meglio: quando avvio il mio programmino vorrei che facendo eseguire un evento come il click di un bottone si aprisse una seconda form precedentemente creata e si chiudesse la precedente. Spero di essere stato chiaro. Grazie ... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
cosa semplicissima:
ipotizziamo che abbiamo due form: 1) frmStart (form di avvio) 2) frmClick (form nuova) Allora quando devi generare l'evento, qualunque esso sia (bottone, tastiera etc) scrivi: frmClick nuovaFinestra = new frmClick (); frmClick.Activate(); frmClick.Show(); this.Close(); Se hai dubbi o vuoi sapere altro chiedi pure. ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
Mi da errore :
Quote:
su Active e show. Come mai? |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
mi posti il codice completo? ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
Ora mm posso postartelo ma e' quello che mi hai dato, naturalmente con i nomi delle mie form
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
devi mettere il nome dell'oggetto istanziato non la classe ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
Quindi? Come devo fare?
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Codice:
frmClick nuovaFinestra = new frmClick (); nuovaFinestra.Activate(); nuovaFinestra.Show(); this.Close();
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
Domani lo provo ... ti diró ...
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
Con questi codici si chiudo entrambe le finestre
|
|
|
|
|
|
#11 |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21914
|
metti il this.close sul pulsante di chiusura della finestra figlia
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Con ogni probabilità in Program.cs hai questo : Codice:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Se esegui questo da un pulsante posto su Form1 : Codice:
Form2 Frm2 = new Form2();
Frm2.Show();
this.Close();
Se invece esegui questo : Codice:
Form2 Frm2 = new Form2();
Frm2.Show();
this.Hide();
La soluzione migliore in un'applicazione multi-Forms, e anche la più elegante, è di lanciare come Form-base iniziale una Form MDI, la cui chiusura provoca l'uscita dal programma, e a quel punto potrai aprire Form2, chiudere Form1, e riprenderlo alla chiusura di Form2... |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
giusto non avevo pensato che era nel form principale oO
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
Ora l' algoritmo funziona ma vorrei sapere una cosa. A cosa serve l' istruzione Hide? Perche anche se chiudo il programma, esso rimane ancora aperto.
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Come suggerisce il nome stesso .Hide() nasconde il controllo all'utente, ma NON lo chiude. Perciò se fai this.Hide(); sulla Form di avvio, il programma è ancora attivo.
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Cagliari
Messaggi: 13495
|
Mi intrometto per fare una domanda penso attinente.
L'alternativa sarebbe associare il programma alla procedura main(), e non al form1, in modo tale che il programma può continuare anche senza form. Ma da qualche parte stavo leggendo (ma non ho capito bene) che il framework è progettato in modo che ogni programma sia associato per forza ad un form. Ho capito male? In pratica il metodo che consigliate per risolvere il dubbio di pare93 è di nascondere il primo form con hide() ? Oppure è meglio fare una routine senza form principale ( la main() ) che gestisce i form?
__________________
MoBo:Asus Prime x470-Pro*CPU:AMD Ryzen 5700x*RAM:Kingston FURY KF432C16RB2K2/16*Sk.Vid:Asus DUAL-RX580-O8G*Ali:Enermax Revolution87+ 550W*Storage:Samsung 970 Evo Plus 1TB + Samsung 860 Evo 1TB*Mons:Dell 2209WAf + LG 24EA53VQ |
|
|
|
|
|
#18 | |||
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Anche perchè, senza UI, come fai a chiuderla poi ? Vai di Task Manager ? Quote:
Del resto non avrebbe alcun senso prevedere un'applicazione Windows Forms senza Forms. A sto punto si crea un'applicazione Console, una Library, ecc... Quote:
Se si omette la MDI, è ovvio che la Form di avvio Form1 non va mai chiusa. Se si vuole perseverare nella scelta di poter chiudere o nascondere la Form di avvio Form1, una strada possibile, che personalmente non sceglierei, è questa : > Classe "Forms" : Codice:
public static class Forms
{
public static Form1 Frm1;
}
Codice:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Forms.Frm1 = new Form1();
Application.Run(Forms.Frm1);
}
Codice:
Form2 Frm2 = new Form2();
Frm2.Show();
this.Hide();
Codice:
Forms.Frm1.Show();
this.Close();
|
|||
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jan 2007
Città: villa verucchio
Messaggi: 1921
|
una soluzione non potrebbe anche "appoggiare" creazione e gestione del form secondario su un thread indipendente?
__________________
CPU: Amd Phenom II 955--MB: Gigabyte GA-890GPA-UD3H--RAM:4 GB DDR3--SV: ATI Radeon HD 5770--HD: Western Digital Caviar Black 500 gb--ALI:: Corsair 650w--MONITOR: SyncMaster P2270--ROUTER: Netgear DG834G--SO: Win 7 Professional 64 bit |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Non vedo come potrebbe risolvere il caso specifico dell'utente che ha aperto la discussione. Bisognerebbe comunque andare a ripescare la visibilità della Form1, oltretutto questa volta dovendo gestire anche il cross-thread... O sbaglio ?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:50.




















