在使用WinForm标准的TreeView控件的过程中,添加了如下类似的节点

parentNode1

  ---childNode1

  ---childNode2

parentNode2

  ---childNode1

  ---childNode2

    当parentNode2收起的时候,双击parentNode2,节点会自动展开,并且 NodeMouseDoubleClick事件会发生响应,在响应NodeMouseDoubleClick事件的时候,参数TreeNodeMouseClickEventArgs  e 可能出现混乱,这主要是因为双击父节点的时候,会默认展开或者收起子节点,在展开或者收起子节点的时候,treeview会自动调整节点在字体中的显示位置,如果子节点较多,位置发生了移动,那么e.Node就不能代表双击的实际节点。比如说在我的程序中,双击parentNode2时,e.Node实际上可能是childNode1或者childNode2,因为位置不一样而出现不同的参数。

为了解决这个问题,在实际编程中,应当实际避免使用e.Node,转而使用treeViewInfo.SelectedNode来代替双击的节点。这就比较完美的解决了双击事件行为混乱的问题。下面是实际中我所使用的双击事件的代码。

 

代码
private void treeViewInfo_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
if(e.Button ==MouseButtons.Right)
return;
var heatRw
= treeViewInfo.SelectedNode.Tag as HeatReadWrite;
if (heatRw != null)
{
HeatWriteForm hf
= new HeatWriteForm(heatRw);
hf.ShowDialog();
hf.Dispose();
}
}

 

 

相关文章:

  • 2021-07-01
  • 2021-08-08
  • 2022-02-17
  • 2021-07-22
  • 2022-12-23
  • 2021-12-18
  • 2022-12-23
  • 2021-06-21
猜你喜欢
  • 2021-10-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-31
  • 2021-12-31
相关资源
相似解决方案