gpt4 book ai didi

c# - DispatcherTimer 堆叠 - UWP

转载 作者:行者123 更新时间:2023-11-30 21:34:14 26 4
gpt4 key购买 nike

我目前正在 UWP 中开展一个项目,我有一个 CommandBar,我想将其从 Hidden 变为 Compact 如果鼠标移动。五秒钟后(如果鼠标不移动)CommandBar 应该再次返回到Hidden

我没有收到任何错误,但是当我移动鼠标时,CommandBar 变得疯狂,它只是从 Hidden 闪烁到 Compact 当我再次移动鼠标。我认为问题在于 OnMouseMovement 事件自身堆叠。

这是我的鼠标移动事件代码:

public async void OnPointerMoved(object Sender, PointerRoutedEventArgs e)
{
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Compact;
DispatcherTimer ButtonTimer = new DispatcherTimer();
ButtonTimer.Interval = TimeSpan.FromSeconds(5);
ButtonTimer.Tick += (sender, args) =>
{
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Hidden;
};
ButtonTimer.Start();
}

最佳答案

我做了一个小测试项目来尝试一下并给你一个答案,这就是我所做的:

private DispatcherTimer Timer { get; set; }
public MainPage()
{
this.InitializeComponent();
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Hidden;
Timer = new DispatcherTimer(){Interval = TimeSpan.FromSeconds(5) };
Timer.Tick += (sender, args) => {
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Hidden;
Timer.Stop();
};

}

public async void OnPointerMoved(object Sender, PointerRoutedEventArgs e)
{
Timer.Stop();
CmdBar.ClosedDisplayMode = AppBarClosedDisplayMode.Compact;
Timer.Start();
}

基本上就像@Evk 所说的那样,您每次移动鼠标都会创建一个新计时器。所以我为计时器声明了一个属性并在鼠标移动时停止它然后重新启动它。

关于c# - DispatcherTimer 堆叠 - UWP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50482683/

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