我的问题是,我在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();
}
答案 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
}