gpt4 book ai didi

c# - 在引发不同事件时引发事件 - C#

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:54 25 4
gpt4 key购买 nike

我在 WPF 应用程序中制作了自己的 Button User 控件。

在此,我试图在另一个事件上引发一个附加了多个事件处理程序的事件。

我有多个事件处理程序附加了“MouseUp”事件,用于 View 和业务逻辑 (MVVM)。我只想用“Enter”和“SpaceBar”在“KeyUp”上触发所有与“MouseUp”事件相关的处理程序

这是我用来在“KeyUp”上引发“MouseUp”事件的示例代码,如果键是 enter 或 space

 void Button_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space || e.Key == Key.Enter)
{
RaiseEvent(new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Left)
{
RoutedEvent = Mouse.MouseUpEvent,
Source = this,
});
}
}

不确定。我可能是错的。但这对我有用。然而,并非在所有情况下。

在某些情况下,事件未按预期引发。

在我的进一步调查中,我看到触发了按键事件。但是在某些对象中没有引发“MouseUp”事件中的任何事件处理程序。

有什么优雅的方法可以满足我的需求。

最佳答案

这打破了阅读代码的任何人的预期模式 - 为什么在释放键时需要触发 mouseup 事件?如果只是为了避免代码重复,您应该有一个单独的方法,mouseupkeyup 都调用。

根据评论,如果您附加了多个事件处理程序,则需要将它们全部附加到两个事件。或者,您可以创建一个元事件处理程序,将所有其他事件调用为方法,然后将那个事件附加到每个事件。

关于c# - 在引发不同事件时引发事件 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com