避免 C# TreeView NodeMouseDoubleClick 雙擊事件的錯誤行為

來源:互聯網
上載者:User

   在使用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();
}
}

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.