Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473

    VB.NET - Treeview e apertura form

    Ciao a tutti!

    Ho un form1 dove all'interno ho un treeview.

    Nella proprietà Afterselect del treview ho un select case, che in base al nodo selezionato esegue alcune procedure, in un nodo dovrebbe aprire il form2.

    codice:
     Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
    
    
            Select Case (e.Node.Name)
    
                Case "Nodo1"
                    TabControl2.TabPages.Clear()
                    TabControl2.TabPages.Add(TabPage1)
    
    
                Case "Nodo33"
                    TabControl2.TabPages.Clear()
                    TabControl2.TabPages.Add(TabPage3)
    
                Case "Nodo34"
    
                    Form2.Show()
                 
    
            End Select
    
    
        End Sub

    Come potete vedere nel nodo 34 ho inserito form2.show(), il form2 si apre correttamente, ma una volta caricato ritorna in primo piano il form1!!!

    Non vorrei utilizzare Form2.ShowDialog() in quanto non è possibile ritornare al form1 senza prima aver chiuso il Form2!!!

    Grazie


    Ciao

  2. #2
    Prova ad aggiungere in Form2

    codice:
        Private Sub Form2_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    
            Me.Activate()
    
        End Sub
    Bye

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Ciao,
    no non funziona...


    Ho trovato questa proprietà topmost che in parte funziona
    codice:
    Me.TopMost = True
    L'unica pecca è che rimane sempre in primo piano, nel senso che se sotto ho un altro form e lo seleziono, non va in secondo piano, per visualizzare il frm sottostante devo o chiudere o mettere sotto icona il form2!

    e se uso questa porprietà su piu form si complica ancora di piu la vita!!!

    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    penso che il mio problema sia perche uso la proprietà After select del treview, magari dopo l'after select vb esegue anche altre proprietà, qualcuno conosce l'ultima proprietà che viene eseguita dal treeview???

    Preciso che io nel mio codice ho solo la proprietà Afterselect per il treeview

    Grazie

  5. #5
    Mah, ho creato un semplice programmino con un TreeView, ho inserito una Sub AfterSelect e col codice che ho postato... Form2 rimane tranquillamente in primo piano (mentre senza torna in primo piano Form1).

    A questo punto punto in Form1 ci deve essere qualcosa che lo riporta nuovamente in primo piano... tipo una label che cambia valore a seconda della selezione o quant' altro.

    Prova a mettere una interruzione subito dopo il Me.Activate(), su un codice neutro, tipo il Me.Activate ripetuto due volte, verifica se Form2 è effettivamente andato in primo piano dopo il primo Me.Activate e poi istruzione per istruzione (F8) controlla quando Form1 torna in primo piano.

    Di più nin zo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    ho provato a fare come dici tu ma non funziona, dopo me.activate ho messo exit sub, ma eseguendolo passo passo con f8 vedo che apre il form2 in primo piano, esegue le istruzioni del form load e poi ritorna nel end select del form1.

    Te nel tuo progetto hai usato un select case per capire il nodo selezionato?

    ora voglio provare ad abilitare un timer nal case del nodo, e far aprire il form2 dal timer

    Grazie

  7. #7
    Si, ho seguito pari pari, per quanto sia visibile, il tuo codice, Select Case compreso.

    Ma precisa: dici che Form2 va in primo piano, ma andando passo passo Form1 quindi non torna in primo piano?

    Andando passo passo il tutto si interrompe all' End Select di Form1?

    Se veramente il codice termina all' End Select potresti provare a scrivere dopo l' End Select:

    codice:
       If Form2.Visible then Form2.Activate
    Bye

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Grazie

    ora provo, se ho altri problemi ti scrivo domani!!!

    Grazie

    Ciao

  9. #9
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Ho provato anch' io...il form2 rimane sopra il primo con una delle tre righe a scelta:
    codice:
    Me.Activate()
    Me.Focus()
    Me.BringToFront()
    a patto che il codice sia inserito nell' evento Shown del form2, se si scrive nel Load rimane sotto il primo form.
    Da msdn:
    Evento Form.Load = Si verifica prima che il form venga visualizzato per la prima volta
    Evento Form.Shown = Si verifica la prima volta che il form viene visualizzato
    quel "prima" del Load mi fa pensare al clic del mouse che ridà il focus al form1, per provare ho messo 'TreeView1.Enabled = False' prima di 'Form2.Show()' e il codice funziona senza quanto scritto sopra...sempre se non stò scrivendo caxxate...
    ciao

    PS: nel form2 modifico il testo di una label del form1.

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da androita
    ho provato a fare come dici tu ma non funziona, dopo me.activate ho messo exit sub, ma eseguendolo passo passo con f8 vedo che apre il form2 in primo piano, esegue le istruzioni del form load e poi ritorna nel end select del form1.
    Costruisci un prototipo di applicazione simile a quella in esame dove intercetti l'evento AfterSelect e visualizzi un secondo Form.

    Se l'effetto non viene riprodotto, probabilmente c'è qualcosa nel tuo progetto che influisce sul comportamento, altrimenti pubblica il codice intero del prototipo così possiamo testarlo anche noi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.