根据TreeView结构中的哪个节点调用特定的UserControl

问题描述 投票:-1回答:1

在我的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事件处理程序的实现是不正确的。任何人都可以帮我吗?

c# winforms user-controls eventhandler treeviewitem
1个回答
1
投票

当节点为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();
            }
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.