Ciao a tutti,
è da poco che mi sono affacciato all'ambiente .NET, quindi avrei bisogno del vostro aiuto....
Come posso impedire l'apertura di un form figlio se queste e già aperto all'interno del form padre?
Grazie...
![]()
Ciao a tutti,
è da poco che mi sono affacciato all'ambiente .NET, quindi avrei bisogno del vostro aiuto....
Come posso impedire l'apertura di un form figlio se queste e già aperto all'interno del form padre?
Grazie...
![]()
Scusa, ripeti perchè non si è capito un granchè.
C'è qualcuno che ti apre le form di nascosto ?VVoVe:
Ciao![]()
Si scusate...
Come posso impedire l'apertura di una nuova finestra di un form figlio se quest'ultimo è già stato aperto nel form padre?
Io attualmente utilizzo questo codice
Codice PHP:Form childForm = new Form();
childForm.MdiParent = this;
childForm.Show();
Puoi fare come segue (codice in VB NET ma molto semplice da convertire):
Crei una funzione per controllare se la finestra è già aperta:
E nella funzione che richiama la finestra inserisci:codice:Private Function IsOpened(ByVal Nome As String) For Each Figlio As Form In Me.MdiChildren If Figlio.Name = Nome Then Return True End If Next Return False End Function
Spero di esserti stato di aiuto. Ciaooocodice:If IsOpened("NomeFiglio") Then NomeFiglio.Show() Else NomeFiglio = New Form NomeFiglio.MdiParent = Me NomeFiglio.Show() End If
Fusion
Currency Text Box (Updated: 16 Maggio 2008): http://digilander.libero.it/cmfusion/CurrencyTextBox.html
una cosa del tipo
codice:Dim bFormAperta = False For Each f As Form In Me.MdiChildren If TypeOf (f) Is FORMDELTIPOCHEVUOIAPRIRE Then bFormAperta = True Exit For End If Next If Not bFormAperta Then 'apri la FORMDELTIPOCHEVUOIAPRIRE End If
Utilizzando il il tuo codice accade che se la finestra del form figlio non è stata ancora aperta, me l'apra all'interno del from padre,ma nel caso fosse già aperto il form figlio mi apre il form normalmente....Originariamente inviato da fu510n
Puoi fare come segue (codice in VB NET ma molto semplice da convertire):
Crei una funzione per controllare se la finestra è già aperta:
E nella funzione che richiama la finestra inserisci:codice:Private Function IsOpened(ByVal Nome As String) For Each Figlio As Form In Me.MdiChildren If Figlio.Name = Nome Then Return True End If Next Return False End Function
Spero di esserti stato di aiuto. Ciaooocodice:If IsOpened("NomeFiglio") Then NomeFiglio.Show() Else NomeFiglio = New Form NomeFiglio.MdiParent = Me NomeFiglio.Show() End If
si scusa.. ho sbagliato
se è già aperta devi mettere:
NomeFiglio.Focus()
![]()
Fusion
Currency Text Box (Updated: 16 Maggio 2008): http://digilander.libero.it/cmfusion/CurrencyTextBox.html
codice:private void ShowNewForm(object sender, EventArgs e) { Form NomeFiglio = new Form(); if ((bool)IsOpened("NomeFiglio")) { NomeFiglio.Focus(); } else { NomeFiglio = new Form(); NomeFiglio.MdiParent = this; NomeFiglio.Show(); } } private object IsOpened(string Nome) { foreach (Form Figlio in this.MdiChildren) { if (Figlio.Name == Nome) { return true; } } return false; }mi continua ad aprire finestre...dove sbaglio?
Credo che l'errore sia perchè dovresti passare alla funzione ShowNewForm il nome del form da verificare
, come fai tu mi sembra che crei sempre e comunque un nuovo form:codice:private void ShowNewForm(NomeDelFormDaControllare) if ((bool)IsOpened(NomeDelFormDaControllare)) { NomeDelFormDaControllare.Focus(); }
codice:Form NomeFiglio = new Form();
Ciao![]()
Originariamente inviato da aligo
codice:private void ShowNewForm(object sender, EventArgs e) { Form NomeFiglio = new Form(); if ((bool)IsOpened("NomeFiglio")) { NomeFiglio.Focus(); } else { NomeFiglio = new Form(); NomeFiglio.MdiParent = this; NomeFiglio.Show(); } } private object IsOpened(string Nome) { foreach (Form Figlio in this.MdiChildren) { if (Figlio.Name == Nome) { return true; } } return false; }mi continua ad aprire finestre...dove sbaglio?
![]()
Logico che non funzionava....non gli attribuivo nessun nome al Form con quale andare a fare il confronto....
Grazie di tutto.....sicuramente in futuro avrò ancora bisogno del vostro aiuto.......
codice:NomeFiglio.Name="NomeFiglio";