c# treeView 取消选择事件
需求:選擇樹的節(jié)點時,會觸發(fā)某些事件。但是部分節(jié)點的處理比較特殊,不能選擇。另外,前臺選擇的節(jié)點盡量不要跳來跳去。
幾個知識點:
treeView.BeforeSelect事件,可以取消選擇。
TreeViewCancelEventArgs e,e包含有屬性Action、Node、Cancel。可以根據(jù)Action來判斷BeforeSelect事件是由什么操作觸發(fā)的。同樣,Node獲取當前的節(jié)點,通過Node的屬性值也可以判斷是否繼續(xù)往下執(zhí)行。屬性Cancel為true時,不會繼續(xù)往下執(zhí)行。(注:至少不會出發(fā)AfterSelect事件)
e.Action,是一個枚舉。有五個值:Collapse、Expand、Unknown、ByKeyboard、ByMouse。稍微理解一下,可以知道Collapse是折疊節(jié)點時的狀態(tài),Expand對應展開節(jié)點操作,ByKeyboard對應鍵盤選擇操作,ByMouse對應鼠標選擇操作,至于Unknown,不全是但包含treeView.SelectedNode = tn;對TreeView的SelectedNode屬性賦值時的狀態(tài)。
應用實例:當節(jié)點展開、折疊,以及節(jié)點為第一級的節(jié)點(也就是沒有父節(jié)點)的情況下,取消選擇事件;而對SelectedNode賦值的情況,不取消事件,但是也不執(zhí)行BeforeSelect事件中的其他代碼。
代碼如下:
//切換節(jié)點 void treeAll_BeforeSelect(object sender, TreeViewCancelEventArgs e) {var tn = e.Node;//一層節(jié)點,展開,收縮等操作都不響應。if (tn.Parent == null|| e.Action == TreeViewAction.Collapse|| e.Action == TreeViewAction.Expand){e.Cancel = true;return;}//未知操作執(zhí)行選擇,但不執(zhí)行下面的actif (e.Action == TreeViewAction.Unknown)return;Action act = () =>{//DoSomething };if (true) act(); }轉(zhuǎn)載請注明出處:http://www.cnblogs.com/icyJ/
轉(zhuǎn)載于:https://www.cnblogs.com/icyJ/archive/2013/05/09/beforeselect.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結(jié)
以上是生活随笔為你收集整理的c# treeView 取消选择事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些不常用的代码汇总(不断更新)
- 下一篇: Insert intervals