根据TreeView结构中的哪个节点调用特定的UserControl
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据TreeView结构中的哪个节点调用特定的UserControl相关的知识,希望对你有一定的参考价值。
在我的Windows窗体中,有两个用户控件,一个放在另一个上面。
我还有一个TreeView结构(TreeView1),它有一个根节点(本身有两个子节点,带有复选框)。
基本上,我希望在选中与该用户控件对应的树视图节点时,只显示一个用户控件。
这是我为响应检查事件而编写的代码:
private void TreeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
string Case;
Case = e.Node.Name;
switch (Case)
{
case "Call_UC1": //Name of the first node of TreeView Structure
UC1.BringToFront(); //UC1 - object of the User Control 1
UC1.Visible = true;
break;
case "Call_UC2": //Name of the second node TreeView Structure
UC2.BringToFront(); //UC2 - object of the User Control 2
UC2.Visible = true;
break;
default:
break;
}
}
问题是,当我检查任一节点的任何复选框时,用户控件没有响应。什么都没发生。我猜测我的TreeView事件处理程序的实现是不正确的。任何人都可以帮我吗?
答案
当节点为UNCHECKED时,AfterCheck()也会触发...你需要检查这个。此外,您是否有适当的代码可以防止同时检查这两个框?否则,哪一个应该在前面?无论上次检查过哪一个?
......如果在检查之后未检查两者,会发生什么? UserControls应该不可见吗?
这么多的问题...
这〜可能就是你所追求的:
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Node.Checked)
{
if(e.Node.Name == "Call_UC1")
{
UC1.Visible = true;
UC1.BringToFront();
}
else if (e.Node.Name == "Call_UC2")
{
UC2.Visible = true;
UC2.BringToFront();
}
}
}
以上是关于根据TreeView结构中的哪个节点调用特定的UserControl的主要内容,如果未能解决你的问题,请参考以下文章