2010-05-26 5 views
1

Mon problème est, j'utilise un TreeView dans un UserControl. Pendant le débogage, je peux voir que les résultats s'ajoutent dans TreeView mais cela n'arrive pas quand j'utilise ce UserControl sur mon MainForm. Le UserControl contenant le TreeView reste vide pendant l'exécution de l'application principale. J'ai également référencé le projet UserControl avec mon projet Main. Ici, je donne mon code pour m'aider.UserControl/TreeView Problème .... Ne pas obtenir de résultat pendant l'exécution

Merci d'avance.

code:

Dans la classe UserControl:

public override void Refresh() 
{ 
    PopulateTreeView(); 
} 
private void PopulateTreeView() 
{ 
    TreeNodeCollection treeNodeCollection; 
    treeNodeCollection = CreateParentNode("My Information"); 
    CreateChildNode(treeNodeCollection, "Name"); 
    CreateChildNode(treeNodeCollection, "Address"); 
    this.Update(); 
    myTreeView.ExpandAll(); 
} 
private TreeNodeCollection CreateParentNode(string parentNode) 
{ 
    TreeNode treeNode = new TreeNode(parentNode); 
    myTreeView.Nodes.Add(treeNode); 
    return treeNode.Nodes; 
} 
private void CreateChildNode(TreeNodeCollection nodeCollection, string itemName) 
{ 
    TreeNode treeNode = new TreeNode(itemName); 
    nodeCollection.Add(treeNode); 
} 

Dans mon MainForm:

private void button1_Click(object sender, EventArgs e) 
{ 
    UserControl userControl = new UserControl(); 
    userControl.Refresh(); 
} 

Répondre

0

Dans le Click-événement du bouton que vous créez un nouveau UserControl et n'utilisant pas réellement l'Utilisateur Contrôle qui est placé sur votre formulaire principal. Soit vous devez appeler Refresh() sur le UserControl qui se trouve sur votre MainForm, soit vous devez ajouter le UserControl nouvellement créé à la ControlsCollection de MainForm. Lorsque vous avez ajouté le UserControl au Concepteur de VisualStudio, MainForm doit contenir une variable portant le nom userControl1.

Sur ce que vous appelez Actualiser(). Ensuite, vous devriez voir le résultat attendu et le TreeView peuplé.

private void button1_Click(object sender, EventArgs e) 
{ 
    userControl1.Refresh(); // Assume that the name of UserControl is userControl1 
} 

Si vous souhaitez utiliser un nouveau UserControl chaque fois que vous cliquez sur le bouton, vous devez ajouter le contrôle à la ControlsCollection du MainForm. Mais alors vous devez effectuer une logique de mise en page.

private void button1_Click(object sender, EventArgs e) 
{ 
    UserControl userControl = new UserControl(); 
    userControl.Refresh(); 
    this.Controls.Add(userControl); 
    // Perform layout logic and possibly remove previous added UserControl 
} 
Questions connexes