C# 当按下按钮时,如何使按钮事件重复开火

C# 当按下按钮时,如何使按钮事件重复开火,c#,wpf,C#,Wpf,我希望能够按住一个按钮(即MouseLeftButtonDown),让它的事件重复开火 我在MouseLeftButtonDown事件中编码Mouse.Capture(按钮),在MouseLeftButtonUp事件中编码Mouse.Capture(null) 如果我按住鼠标按钮,MouseLeftButtonDown只会触发一次。我不是通过设置断点,而是通过使用Console.Writeline()可以看到这一点 我让这段代码在某个时候起作用。然后我重构并将鼠标事件放入一个接口中。现在除了这个

我希望能够按住一个按钮(即MouseLeftButtonDown),让它的事件重复开火

我在MouseLeftButtonDown事件中编码Mouse.Capture(按钮),在MouseLeftButtonUp事件中编码Mouse.Capture(null)

如果我按住鼠标按钮,MouseLeftButtonDown只会触发一次。我不是通过设置断点,而是通过使用Console.Writeline()可以看到这一点

我让这段代码在某个时候起作用。然后我重构并将鼠标事件放入一个接口中。现在除了这个重复动作外,一切都正常

更新-更多信息:

以下是特定类中的before调用:

鼠标捕获(发送者为菜单按钮)

MenuGelButton是一个xaml创建的省略号和文本,用来制作一个很酷的按钮

由于添加了接口(这是几个xaml创建的通用代码,所有这些创建都继承了接口),下面是来自接口内部的当前调用:

鼠标捕获(发送者作为UIElement)

更新的更新:


鼠标单击事件不是为自动重复开火而设计的。键盘事件正在进行中。我在一个键盘事件而不是鼠标事件中使用了它(并且它将继续使用)。很抱歉给您带来困惑…

尝试这样做:

  • 鼠标按钮-->触发事件
  • 在这种情况下,根据您的喜好设置一个计时器(您希望该动作每秒发生多少次?)
  • 在一个循环中,每次定时器启动时,检查鼠标按钮是否仍然“按下”。如果是,就开火。如果没有,就不要开枪
  • 您可能需要添加另一个鼠标按钮向上的事件,该事件将停止计时器,因此它将不再触发(或者绑定到一个bool,该bool将让您知道是否要向上触发…由您决定)

希望能有所帮助。

试试这样做:

  • 鼠标按钮-->触发事件
  • 在这种情况下,根据您的喜好设置一个计时器(您希望该动作每秒发生多少次?)
  • 在一个循环中,每次定时器启动时,检查鼠标按钮是否仍然“按下”。如果是,就开火。如果没有,就不要开枪
  • 您可能需要添加另一个鼠标按钮向上的事件,该事件将停止计时器,因此它将不再触发(或者绑定到一个bool,该bool将让您知道是否要向上触发…由您决定)

希望有帮助。

我相信您正在寻找微软的。您可以在XAML中使用它,就像使用按钮一样,它会多次触发单击事件

根据他们的文件:

RepeatButton是一个按钮,从按下它到释放它都会重复引发单击事件。设置Delay属性以指定RepeatButton在按下后开始重复单击操作之前等待的时间。设置“间隔”属性以指定重复单击操作之间的时间间隔。这两个属性的时间均以毫秒为单位指定


我相信你正在寻找微软的。您可以在XAML中使用它,就像使用按钮一样,它会多次触发单击事件

根据他们的文件:

RepeatButton是一个按钮,从按下它到释放它都会重复引发单击事件。设置Delay属性以指定RepeatButton在按下后开始重复单击操作之前等待的时间。设置“间隔”属性以指定重复单击操作之间的时间间隔。这两个属性的时间均以毫秒为单位指定


“我让这段代码在某种程度上正常工作。然后我重构并将鼠标事件放在一个界面中。现在除了这个重复操作之外,一切都正常!”——没有看到前后代码,这只是一个猜测游戏。我在原来的问题中添加了更多的信息。好吧,我想我被弄糊涂了……我现在意识到鼠标点击不会像键盘事件那样自动重复开火。当我按住键盘键而不是鼠标点击时,这项工作会持续进行。我为大家的困惑道歉!“我让这段代码在某种程度上正常工作。然后我重构并将鼠标事件放在一个界面中。现在除了这个重复操作之外,一切都正常!”——没有看到前后代码,这只是一个猜测游戏。我在原来的问题中添加了更多的信息。好吧,我想我被弄糊涂了……我现在意识到鼠标点击不会像键盘事件那样自动重复开火。当我按住键盘键而不是鼠标点击时,这项工作会持续进行。我为大家的困惑道歉!