‫欢迎回来｡
‫在这段视频中, 我们将讨论泽莫的事件｡
‫还有一些事件被称为根事件｡
‫并且有三种类型的根事件直接事件､ 冒泡事件和隧道事件｡
‫我们已经看到了一个直接事件, 让我们再次创建该事件｡
‫我将在这里创建一个按钮, 该按钮将只包含一个非常基本的Click
‫Me内容, 然后它将包含一个click事件, 我将在这里创建一个新的事件处理程序｡
‫差不多就是这样｡
‫也许我们应该创建一个宽度为150, 高度为100的图形｡
‫这是一个相当大的按钮｡
‫现在这个按钮有一个click事件｡
‫现在, 单击事件是直接事件｡
‫让我们来看看这里｡
‫我们可以看到为我们创建了一个新方法｡
‫这是一个私有的void按钮单击方法对象中心路由的事件arx e｡
‫因此它需要一个发送者, 即发送此事件的对象｡
‫这是我们的按钮本身｡
‫所以对象按钮发送这个事件, 我们可以继续使用这个按钮｡
‫还有三个事件, 我说过, 根事件或者说根事件就是一般的事件｡
‫还有一个直接事件, 它是根事件之一, 也就是我们的点击事件｡
‫我们马上就退房｡
‫然后是冒泡事件和隧道事件｡
‫现在让我们运行这段代码, 这样你就可以看到直接事件会做什么｡
‫顺便说一下, 如果我们想执行任何操作, 当然需要在这里添加一个消息框, 以显示正在发生的事情｡
‫因此, 点击按钮之类的东西, 然后添加直接事件之类的东西｡
‫如此直接的事件｡
‫现在我们再来一遍｡
‫点击按钮, 你会看到按钮是点击指令, 我们已经在上一个视频中使用了这个按钮,
‫这里没有什么新内容｡
‫好吧, 我知道了
‫所以直接调用这个按钮或者直接通过这里的click属性调用按钮的事件｡
‫现在有一种叫做冒泡事件的东西｡
‫假设您不希望事件在用户单击按钮时立即启动, 而希望在您释放该按钮以单击时立即启动｡
‫当按钮或点击出现时, 您可以在这里使用鼠标按钮或鼠标, 这就是所谓的鼠标释放｡
‫所以我将为此创建一个新的事件处理程序｡
‫让我们转到此处创建这个新事件, 它也将在此处显示一个消息框｡
‫这一个会说鼠标按钮上升, 被释放｡
‫所以只有当它被释放时, 这个事件才会被触发｡
‫将触发此按钮的鼠标释放事件｡
‫我们再来一遍｡
‫然后用左键单击按钮｡
‫如果我用右键点击, 什么也没发生, 然后突然发生了一些事情, 这和冒泡事件有关｡
‫因此, Mouse Up是一个冒泡事件, 这意味着它会将此事件发送到树中层次结构的顶部｡
‫我们已经知道了什么是树, 对吧？
‫我们已经在逻辑树中看到了可视化树｡
‫所以在这里, 它会在视觉化树形结构中向上移动｡
‫正如你所知, 可视化树比我们在这里的逻辑树中看到的要多得多｡
‫因此, 它不仅仅是窗口､ 网格和按钮本身, 而且还有更多的东西｡
‫所以这个按钮会把它一直发送到所有不同的树元素上｡
‫然后发送到网格, 再发送到窗口｡
‫如果不处理的话, 什么都不会发生｡
‫这就是我们刚才看到的｡
‫所以如果我按下鼠标或者松开鼠标按钮, 就像你在这里看到的, 我在点击, 我仍然在按住｡
‫一旦我释放, 什么都不会发生｡
‫这与一个冒泡事件有关, 它被忽略了, 正如你所看到的,
‫用右键可以工作, 但用左键就不行, 所以它冒泡了, 被我们捕捉到了｡
‫你怎么还能应付得来？
‫因为现在, 它不能用左键, 但你想用左键｡
‫你能做的就是使用隧道事件｡
‫冒泡事件在视觉化树形结构中向上移动, 通道事件在视觉化树形结构中向下移动｡
‫所以我不使用鼠标释放, 而是使用预览鼠标释放｡
‫如您所见, 这里有多个不同的预览活动, 非常多｡
‫例如, 鼠标按下鼠标应用程序预览鼠标右键按下, 右键向上等｡
‫因此, 我将为创建一个｡
‫通常预览鼠标向上, 这样你就可以看到它的工作｡
‫无论哪种方式,
‫我都将为此创建一个新的事件处理程序, 并在此处添加此消息按钮, 此按钮将成为隧道事件｡
‫这里的一个是冒泡事件, 现在我们是隧道事件｡
‫现在让我们重新开始｡
‫我们现在单击左键｡
‫如您所见, 鼠标按钮实际上是用来检查
‫我将点击它, 按住它, 现在我释放它, 然后这个事件被触发｡
‫现在与左手是右按钮以及它的工作以及｡
‫所以这个预览的作用是, 它将它发送到按钮本身或发送到, 或者沿着可视树向下｡
‫所以它会立刻被触发｡
‫所以这很酷｡
‫如果你想使用预览鼠标按钮向上, 那么你是安全的, 让我们假设当你想使用这个特定的行为｡
‫但是, 请考虑到这不仅仅是巴顿的情况｡
‫这是WPF通常处理根事件的方式｡
‫所以在这里要小心, 并以正确的方式使用它｡
‫现在, 让我们进行一次测试, 创建一个预览｡
‫鼠标左键按下｡
‫并创建一个新的处理程序｡
‫现在预览一下鼠标
‫写下来或实际写起来｡
‫所以你可以看到有不同类型的方法｡
‫在这里, 我还将使用一个新的事件处理程序｡
‫现在, 我将相应地调整消息框｡
‫所以在预览中鼠标左键按下, 我会说鼠标键按下了, 没有释放｡
‫这是一个隧道事件｡
‫是的, 是的｡
‫这很好｡
‫另一个是鼠标左键｡
‫这个是鼠标右键｡
‫鼠标右键抬起, 是一个隧道事件｡
‫如果我们继续, 我们可以看到这是按钮｡
‫如果我按左键, 点击, 如你所见, 一旦我点击它,
‫它就会被立即触发, 即使我按住它或按住按钮, 它仍然被触发｡
‫现在右边的按钮只有在我松开后才会被触发｡
‫因此, 您可以看到, 有多种不同的方式来处理事件｡
‫你甚至可以处理一个事件, 如果我们悬停在或如果我们用鼠标进入该按钮｡
‫但这是我们以后会处理的事情｡
‫现在, 我们来回顾一下, 有三种不同类型的根事件, 它们直接指向根事件, 冒泡根事件和隧道根事件,
‫直接根事件, 它们自己处理事件, 例如｡
‫g.计算 我们所看到的点击事件｡
‫然后, 冒泡事件将其向上发送到可视树, 而隧道事件将其向下发送到可视树｡