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
Répondre
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.
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
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.
vous n'avez pas perdu de temps. plusieurs fois juste en parlant à travers le problème aide à le résoudre. – DaveWilliamson
J'ai actualisé ou mis à jour après avoir ajouté des noeuds. – leon