UserControl / TreeView问题....在运行时没有得到结果

时间:2010-05-26 05:20:16

标签: c# winforms

我的问题是,我在UserControl中使用TreeView。在调试时,我可以看到结果在TreeView中添加,但是当我在我的MainForm上使用UserControl时它不会发生。在主应用程序的运行时,包含TreeView的UserControl保持空白。我还使用我的Main项目引用了UserControl项目。在这里,我给出了帮助我的代码。

提前致谢。

代码

在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);
}

在我的MainForm中:

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

1 个答案:

答案 0 :(得分:0)

在Button的Click-Event中,您正在创建一个新的UserControl,而不是实际使用放置在MainForm上的UserControl。

要么必须在MainForm上的UserControl上调用Refresh(),要么必须将新创建的UserControl添加到MainForm的ControlsCollection中。

当您使用VisualStudio的Designer添加UserControl时,MainForm应包含名为userControl1的变量。在此,您调用Refresh()。然后你应该看到预期的结果和填充的TreeView。

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

如果要在每次单击Button时使用新的UserControl,则必须将控件添加到MainForm的ControlsCollection中。但是你必须执行一些布局逻辑。

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
}