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