Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    46

    [C#]Come impedire apertura form figlio

    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...


  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Scusa, ripeti perchè non si è capito un granchè.
    C'è qualcuno che ti apre le form di nascosto ? VVoVe:

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    46
    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(); 

  4. #4
    Utente di HTML.it L'avatar di fu510n
    Registrato dal
    Sep 2005
    Messaggi
    137
    Puoi fare come segue (codice in VB NET ma molto semplice da convertire):

    Crei una funzione per controllare se la finestra è già aperta:
    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
    E nella funzione che richiama la finestra inserisci:
    codice:
        If IsOpened("NomeFiglio") Then
                NomeFiglio.Show()
            Else
                NomeFiglio = New Form
                NomeFiglio.MdiParent = Me
                NomeFiglio.Show()
            End If
    Spero di esserti stato di aiuto. Ciaooo
    Fusion

    Currency Text Box (Updated: 16 Maggio 2008): http://digilander.libero.it/cmfusion/CurrencyTextBox.html

  5. #5
    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    46
    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:
    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
    E nella funzione che richiama la finestra inserisci:
    codice:
        If IsOpened("NomeFiglio") Then
                NomeFiglio.Show()
            Else
                NomeFiglio = New Form
                NomeFiglio.MdiParent = Me
                NomeFiglio.Show()
            End If
    Spero di esserti stato di aiuto. Ciaooo
    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....

  7. #7
    Utente di HTML.it L'avatar di fu510n
    Registrato dal
    Sep 2005
    Messaggi
    137
    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    46
    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?

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Credo che l'errore sia perchè dovresti passare alla funzione ShowNewForm il nome del form da verificare

    codice:
    private void ShowNewForm(NomeDelFormDaControllare)
    
               if ((bool)IsOpened(NomeDelFormDaControllare))
                {
                    NomeDelFormDaControllare.Focus();
                }
    , come fai tu mi sembra che crei sempre e comunque un nuovo form:
    codice:
                Form NomeFiglio = new Form();

    Ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    46
    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";

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.