20/10/16 14:02
lupetto77
Ciao sps84 e grazie per la risposta, so che potevo usare un exe, ma volevo sapere se potevo farlo con una dll?
aaa
20/10/16 23:42
lupetto77
Ciao Thejuster e grazie per la risposta e l'aiuto.
Posto i passi che ho fatto:
1.Creato un nuovo progetto ignorando il Form1 e il resto come mi hai scritto nel post
2.Fatto tasto destro su NomeProgetto->Aggiungi->Controllo utente...
3.Vado nelle proprietà e in Tipo di output: Imposto -> Libreria di classi
4.Compilo
5.Viene creata la dll
1.Ho creato un nuovo progetto Windows Form
2.Ho importato il riferimento alla dll e la using riferita al progetto sopra, il codice che ho inserito è questo:
ucDll Dll = new ucDll();
Form f = new Form();
f.Controls.Add(Dll);
f.ShowDialog();
Application.Exit();
Si apre la finestra che contiene l'user control ma non mi chiude la finestra del chiamante, quindi il risultato è come quello del mio primo post.
Application.Exit() non fa chiudere solo la finestra del chiamante ma tutte.
Come potrei fare?
Ultima modifica effettuata da lupetto77 21/10/16 0:09
aaa
21/10/16 9:15
Thejuster
Il programma funziona in questo modo.
La finestra madre e quella che comanda il programma intero.
Se viene chiusa quella viene chiuso il programma.
La soluzione è fare Hide prima di mostrare l'altro form con il controllo
o un qualcosa del genere
Crea un un form vuoto senza controlli
lo chiamiamo esempio TestForm
TestForm f = new TestForm();
f.Controls.Add(Dll);
DialogResult dlg = f.ShowDialog();
this.Hide(); //Nascondo questo form
//Apro il nuovo form
if(dlg == DialogResult.OK)
{
this.Show();
}
Parte del TestForm
Alla chiusura, invio OK come segnale del dialogo
protected override void OnFormClosing(FormClosingEventArgs e)
{
this.DialogResult = DialogResult.OK;
}
Premuto ok, Il form aperto contenente il controllo si chiude
e quello madre viene rivisualizzato.
se vuoi chiudere direttamente l'applicazione, dal codice di prima
anziché fare this.Show(); esegui Application.Exit();
EDIT:
Si apre la finestra che contiene l'user control ma non mi chiude la finestra del chiamante, quindi il risultato è come quello del mio primo post.
Application.Exit() non fa chiudere solo la finestra del chiamante ma tutte.
Come potrei fare?
Ovviamente, Application.Exit significa "Chiudi Applicazione"
e ovvio che ti faccia chiudere tutte le finestre.
Se vuoi chiudere solo quel forum o qualche altro form aperto,
o usi il sistema del dialogo che ti ho mostrato
o semplicemente
f.Close();
Ultima modifica effettuata da Thejuster 21/10/16 9:19
21/10/16 14:00
lupetto77
Grazie e ciao Thejuster
So che con Application.Exit() chiude tutte le form, ma io volevo sapere se c'è un modo, dalla form principale di aprire in questo esempio la dll, e subito dopo chiudere la form principale per poter cancellare il suo exe.
Perchè se lo faccio usando un progetto exe esterno al posto della dll, con System.Diagnostics.Process.Start() funziona perchè richiamo un progetto esterno quindi subito dopo la chiamata posso terminare con Application.Exit(), ma la mia curiosità è se potevo farlo con una dll.
E' possibile?
Ultima modifica effettuata da lupetto77 21/10/16 15:51
aaa