Disabilitare nodo treeview e riabilitarla

domenica 16 settembre 2012 - 16.15
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Visual Studio 2008  |  MySQL 5.5

Mau67 Profilo | Expert

Ciao al forum,
vengo al dunque ho un form dove all'interno ho un SplitContainer nel Pannel1 ho un TreeView dove c'è il nodo Principale "Anagrafica" e i nodo figli "Questionario", "Classe" ecc.

selezionando i nodi figlio apro dei form con questo codice:
Private Sub tvData_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tvData.AfterSelect
If tvData.SelectedNode.Parent Is Nothing = False Then
''Accedo al valore che c'è sul nodo
If e.Node.Text = "Questionario" Then
Dim frm As New Questionario
SetParent(frm.Handle, Me.SplitContainer1.Panel2.Handle)
frm.Show()
End If
End If
End Sub

Adesso però mi sono accorto che se seleziono più di una volta i nodi mi apre più volte lo stesso form, come posso evitare l'aperture dello stesso form più volte?
magari disabilitando il nodo figlio corrispondente e alla chiusura del form riabilitarlo.
Mi date una mano grazie
Mau67

dupperelko Profilo | Junior Member

Ciao,
se l'utente ha bisogno solo di lavorare su un form alla volta, potrebbe bastare usare lo ShowDialog() invece di Show().

altrimenti potresti inserire a livello di applicazione, o di modulo, un variabile boolean che si setta True all'attivazione del form.
Qunidi ad ogni nuovo Show() controlli che sia False...

Naturalmente ad ogni chiusura del form devi settare la variabile = False...

Poi ci sarebberero altri metodi... per adesso prova così

Ciao

algraps Profilo | Junior Member

Ciao a tutti,
scusate se mi intrometto nella conversazione, potresti usare un Manager per le form magari fatto in questo modo :

public static class FormManager { private static Form currentForm=null; public static Form CurrentForm { get { return currentForm; } set { this.currentForm=value; if (this.currentForm!=null) currentForm.Disposed+=(s,e)=>{FormManager.currentForm=null;}; } } } public void TryShowForm() { if (FormManager.CurrentForm==null) FormManager.CurrentForm=this; this.Show(); }

Aprendo il form in dialog mode, la tua applicazione sara' bloccata fino a quando non chiuderai il form figlio. In questo modo la form associata ai questionari si aprira' una volta sola ma potrai utilizzare ed eseguire altre funzionalita' della tua applicazione.... con la form dei questionari aperta...
Ciao
A.G.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5