我的树视图有点问题。
背景:我有一个包含多个项目的树视图,每当你点击一个父项或第一个孩子时,一个事件应该在新窗口打开的地方触发,你可以在那里做一些事情。
我正在使用树视图的“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才能运行上面的代码?
此致
基督教