C#TreeView - AfterSelect事件触发不需要的

时间:2017-07-17 06:56:46

标签: c# events triggers event-handling treeview

我的树视图有点问题。

背景:我有一个包含多个项目的树视图,每当你点击一个父项或第一个孩子时,一个事件应该在新窗口打开的地方触发,你可以在那里做一些事情。

我正在使用树视图的“After_Select”事件,如下所示:

 if (_inside) //this boolean was my first attempt to deal with the problem
        {
                if (treeView1.SelectedNode.Parent != null)
                {
                    if (treeView1.SelectedNode.Parent.Parent != null)
                    {
                        //its 2nd child -> do nothing
                    }
                    else
                    {
                        Configuration_New_Click(treeView1.SelectedNode.Parent.Name.ToString(), treeView1.SelectedNode.Name.ToString()); //its 1st child do something
                    }
                }
                else
                {
                    Configuration_New_Click(treeView1.SelectedNode.Name.ToString(), ""); //its parent, do something else
                }
        }

问题:事件每次都会触发,例如标签跳出程序并重新标记回来 - >树视图中的第一个项目被选中 - > AfterSelect火灾。我有更多这样的情况,基本上事件会做它应该做的事情,它会在选择项目时触发。问题是,只要树视图通过切换窗口而失去焦点,就会选择第一个树视图项目。 (只有在我点击其他树视图项目之前,它才会触发)

我在论坛上读了一下,找到了我试过的解决方案 - >只要它不应该触发,就将布尔值设置为false。它可以解决一些问题但是当我将alt + tab添加到其他窗口并且alt选项卡背靠背程序时,事件仍会触发。是否有任何快速而肮脏的解决方案来处理这个问题?

感谢您的时间和精力!

编辑:“MouseDown”是更好的解决方案吗?如果是这样,我如何在我的代码中使用此事件?因为我需要selectedNode才能运行上面的代码?

此致

基督教

0 个答案:

没有答案