如何重新分配TreeView对象并使UI反映该更改



我的WinForms UI中有一个TreeView,我想根据一系列单选按钮的选中状态与多个数据集共享。

我想做的是在代码中有一系列隐藏的TreeView对象,我可以将它们分配给可见的TreeView,并告诉UI刷新自己并显示新分配的TreeView。不幸的是,除非我手动添加节点,否则显示TreeView永远不会显示任何数据。我不想每次交换视图时都要不断地在树视图中复制节点,跟踪检查状态等。有没有一种简单的方法来做我想做的事?

TreeView visibleView = new TreeView(); //This is the tv exposed in the UI.
TreeView view1 = BuildTreeView(bDoSomething); //This method adds nodes to a treeview and returns it
TreeView view2 = BuildTreeView(bDoSomethingElse); //Similar to above, just slightly different.
//Depending on checked state, display different TreeView.
if(combobox1.Checked)
//This is a reference assignment. 
//Why won't the visibleView just take on the form of view1?
visibleView = view1; 
else
visibleView = view2;
//Tell UI to display the newly assigned view.
visibleView.Refresh();

根据需要显示和隐藏不同的TreeView实例:

TreeView view1 = BuildTreeView(bDoSomething); 
TreeView view2 = BuildTreeView(bDoSomethingElse);
//Depending on checked state, display different TreeView.
if(combobox1.Checked)
{
view1.Show();
view2.Hide();
} 
else
{
view1.Hide();
view2.Show();
}

好吧,多亏了Neils的建议,我又回到了代码中,发现了我的错误。参考作业效果良好。新的树视图没有被显示,因为它没有被添加到应该显示它的面板的控件数组中。下面的代码现在对我有效。

this.panel1.Controls.Remove(visibleTreeView);
visibleTreeView = view1;
this.panel1.Controls.Add(visibleTreeView);
visibleTreeView.Dock = DockStyle.Fill;
visibleTreeView.Refresh();

相关内容

  • 没有找到相关文章

最新更新