我的按钮事件有点问题。我编程了一个按钮,将特定值减少了1(单击),我想在按住按钮的同时减少它。我正在使用Silverlight,而不是XNA。
myTimer.Change(0, 100);
private void OnMyTimerDone(object state)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
if (rightButton.IsPressed)
{
rightButton_Click(null, null);
}
});
}
此代码在开始时正常工作,但之后我无法单击,因为它总是调用hold事件。
答案 0 :(得分:1)
两个建议,第一个是停止计时器(使用DispatcherTimer),如果isPressed为false
void Button_MouseLeftButtonDown(object sender, EventArgs e)
{
myTimer.Start();
}
void OnTimerTick(object s, EventArgs args)
{
if(rightButton.IsPressed == false)
{
myTimer.Stop();
}
else
{
// decrease value
}
}
第二个是停止MouseLeftButtonUp事件上的计时器
答案 1 :(得分:1)
尝试使用 RepeatButton silverlight控件,而不是使用普通的按钮
以下是如何使用它的示例:
XAML代码:
<RepeatButton x:Name="rbtnDecrease" Content="Decrease" Delay="200" Interval="100" Click="rbtnDecrease_Click" />
延迟: RepeatButton在开始重复之前按下时等待的时间量(以毫秒为单位)。
间隔:重复开始后重复次数之间的时间量(以毫秒为单位)。
C#代码:
private int tempCount = 100; // A temp Variable used as an Example
private void rbtnDecrease_Click(object sender, RoutedEventArgs e){
// Add your Button Click/Repeat Code Here...
// Example of Decreasing the value of a Variable
tempCount--;
}