C# UserControl/TreeView问题…运行时未获得结果
我的问题是,我正在用户控件中使用TreeView。在调试时,我可以看到结果添加到TreeView中,但当我在MainForm上使用该UserControl时,不会发生这种情况。包含TreeView的UserControl在主应用程序运行时保持空白。我还在主项目中引用了UserControl项目。在这里,我给出了帮助我的代码 提前谢谢 代码: 在UserControl类中:C# UserControl/TreeView问题…运行时未获得结果,c#,winforms,C#,Winforms,我的问题是,我正在用户控件中使用TreeView。在调试时,我可以看到结果添加到TreeView中,但当我在MainForm上使用该UserControl时,不会发生这种情况。包含TreeView的UserControl在主应用程序运行时保持空白。我还在主项目中引用了UserControl项目。在这里,我给出了帮助我的代码 提前谢谢 代码: 在UserControl类中: public override void Refresh() { PopulateTreeView(); } priv
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);
}
private void button1_Click(object sender, EventArgs e)
{
UserControl userControl = new UserControl();
userControl.Refresh();
}
在我的主窗体中:
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);
}
private void button1_Click(object sender, EventArgs e)
{
UserControl userControl = new UserControl();
userControl.Refresh();
}
在按钮的单击事件中,您正在创建一个新的UserControl,而不是实际使用放置在MainForm上的UserControl 或者,必须对MainForm上的UserControl调用Refresh(),或者必须将新创建的UserControl添加到MainForm的ControlsCollection 使用VisualStudio的设计器添加UserControl时,MainForm应包含名为userControl1的变量。在这个问题上,您可以调用Refresh()。然后您应该看到预期的结果和填充的树视图
private void button1_Click(object sender, EventArgs e)
{
userControl1.Refresh(); // Assume that the name of UserControl is userControl1
}
如果希望在每次单击按钮时使用新的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
}