2010-07-29 5 views
0

J'ai créé un contrôle utilisateur avec une vue arborescente à l'intérieur. L'arborescence sera remplie si j'ajoute des nœuds dans le gestionnaire onload de la commande usercontrol. Mais après cela (par exemple, je clique sur un bouton dans son formulaire parent), l'arborescence ne sera pas actualisée. Je peux voir que les nœuds ont été mis à jour en mémoire, mais ils ne peuvent tout simplement pas s'afficher à l'écran. J'ai appelé rafraîchir/mettre à jour après avoir ajouté des noeuds. Toute suggestion est appréciée.Impossible de mettre à jour une vue arborescente à l'intérieur d'un contrôle utilisateur

+0

J'ai actualisé ou mis à jour après avoir ajouté des noeuds. – leon

Répondre

0

Je mets un test rapide ensemble en fonction de votre description et il semble très bien peindre.

UserControl1

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ 
Partial Class UserControl1 
    Inherits System.Windows.Forms.UserControl 

    'UserControl overrides dispose to clean up the component list. 
    <System.Diagnostics.DebuggerNonUserCode()> _ 
    Protected Overrides Sub Dispose(ByVal disposing As Boolean) 
     Try 
      If disposing AndAlso components IsNot Nothing Then 
       components.Dispose() 
      End If 
     Finally 
      MyBase.Dispose(disposing) 
     End Try 
    End Sub 

    'Required by the Windows Form Designer 
    Private components As System.ComponentModel.IContainer 

    'NOTE: The following procedure is required by the Windows Form Designer 
    'It can be modified using the Windows Form Designer. 
    'Do not modify it using the code editor. 
    <System.Diagnostics.DebuggerStepThrough()> _ 
    Private Sub InitializeComponent() 
    Me.TreeView1 = New System.Windows.Forms.TreeView 
    Me.SuspendLayout() 
    ' 
    'TreeView1 
    ' 
    Me.TreeView1.Dock = System.Windows.Forms.DockStyle.Fill 
    Me.TreeView1.Location = New System.Drawing.Point(0, 0) 
    Me.TreeView1.Name = "TreeView1" 
    Me.TreeView1.Size = New System.Drawing.Size(150, 150) 
    Me.TreeView1.TabIndex = 0 
    ' 
    'UserControl1 
    ' 
    Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 
    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 
    Me.Controls.Add(Me.TreeView1) 
    Me.Name = "UserControl1" 
    Me.ResumeLayout(False) 

    End Sub 
    Friend WithEvents TreeView1 As System.Windows.Forms.TreeView 

End Class 

Public Class UserControl1 

    Public Sub AddNewNode(ByVal text As System.String) 
    TreeView1.Nodes.Add(text) 
    End Sub 

End Class 

Mettre le usercontrol sur un formulaire avec un bouton

Public Class Form1 

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     UserControl11.AddNewNode(Now.ToString) 
     End Sub 
    End Class 

Si vous voyez la peinture appropriée aussi bien regarder alors à tout graphique de manipulation sous forme de parent alors le usercontrol alors les contrôles au sein de la commande usercontrol. Nous avons vraiment besoin de plus d'informations.

+0

Nous vous remercions de votre aide. Ce que j'ai fait est dans le formulaire parent il y a un menuitem utilisé pour charger un fichier. L'arborescence est construite en se basant sur le fichier. Chaque fois qu'un nouveau fichier est chargé, la propriété du chemin du fichier de la commande usercontrol sera mise à jour. Ensuite, l'arborescence sera recréée. ---------------------------------- mTreeView.Nodes.Clear(); mTreeView.BeginUpdate(); // ajoute le noeud un par un en fonction du contenu du fichier mTreeView.EndUPdate(); mTreeView.Refresh. -------------------------------- – leon

0

Merci, Dave. Je l'ai compris. Je mets la commande usercontrol deux fois à ma forme par erreur (je ne me souviens pas comment je l'ai fait). Et celui que j'opère est sous l'autre. C'est pourquoi je ne peux pas le voir. Désolée de vous avoir fait perdre votre temps.

+0

vous n'avez pas perdu de temps. plusieurs fois juste en parlant à travers le problème aide à le résoudre. – DaveWilliamson