.NET TreeViewItem 仅在选择自身而不是其子项时才选择?
.NET TreeViewItem Selected only when itself is selected, not its child?
目前,我有一个如下所示的树视图:
+Country
+StateA
-CityA
-CityB
+StateB
-CityC
+State
-CityD
其中城市是树的末端叶子,并且 select 可用并且有自己的 Selected
处理程序。该国家/地区也 select 能够并拥有自己的 Selected
处理程序。
处理程序分配如下:
countryTreeItem.Selected += countrySelectedHandler;
...
cityTreeItem.Selected += citySelectedHandler;
当我 select 一个城市时,父州和父国家也被 select 编辑。这意味着当我 select 一片叶子时 citySelectedHandler
和 countrySelectedHandler
都被 selected(比如说,City A
)
有没有办法确保只有叶项得到 selected?如果我单击 CityA
,我只希望该城市的 citySelectedHandler
变为 运行,而不是其祖先的 countrySelectedHandler
也变为 运行。
但是,当 select 编辑(点击)国家/地区时,我仍然希望 countrySelectedHandler
到 运行。简单地删除祖先的处理程序是行不通的。
谢谢!
要停止传播事件,您可以设置e.Handled = true
。这样事件就不会冒泡到祖先树项目。
目前,我有一个如下所示的树视图:
+Country
+StateA
-CityA
-CityB
+StateB
-CityC
+State
-CityD
其中城市是树的末端叶子,并且 select 可用并且有自己的 Selected
处理程序。该国家/地区也 select 能够并拥有自己的 Selected
处理程序。
处理程序分配如下:
countryTreeItem.Selected += countrySelectedHandler;
...
cityTreeItem.Selected += citySelectedHandler;
当我 select 一个城市时,父州和父国家也被 select 编辑。这意味着当我 select 一片叶子时 citySelectedHandler
和 countrySelectedHandler
都被 selected(比如说,City A
)
有没有办法确保只有叶项得到 selected?如果我单击 CityA
,我只希望该城市的 citySelectedHandler
变为 运行,而不是其祖先的 countrySelectedHandler
也变为 运行。
但是,当 select 编辑(点击)国家/地区时,我仍然希望 countrySelectedHandler
到 运行。简单地删除祖先的处理程序是行不通的。
谢谢!
要停止传播事件,您可以设置e.Handled = true
。这样事件就不会冒泡到祖先树项目。