我注意到当窗口处理由其中的文本框引发的KeyDown事件并将事件Handled标志设置为true时,文本框会忽略按下的键并且不会将其添加到其内容中。
根据我对事物运作方式的理解,如果首先从窗口隧道到TextBox然后KeyDown事件从TextBox冒泡到窗口,则PreviewKeyDown事件。当窗口的事件处理程序设置Handled事件时,TextBox不再处理该事件,但我确实看到它有效果,并且按下的键没有添加到TextBox。
有人能解释一下这是如何运作的吗?
(这是一个普遍的问题,但是在我看到我们正在使用的第三方控件中出现类似的行为之后引发了它,这引起了我的问题,因为我希望控件处理事件但是阻止它向上冒泡。)
答案 0 :(得分:0)
嗯,实际上,无论是否处理,这些事件总会冒泡/隧道。大多数事件处理程序都没有注册接收“处理”事件。
例如,可以选择订阅KeyDown事件并接收“调用”,即使它已在某处处理。
但是,是的,事件的顺序通常是从顶部(隧道)开始,然后隧道返回到元素并冒泡。
如果您有更多问题,请与我们联系。