2

我对按钮事件有一点问题。我将一个按钮编程为将特定值减少 1(单击),并且我想在按住按钮的同时随着时间的推移减少它。我使用的是 Silverlight,而不是 XNA。

myTimer.Change(0, 100);
private void OnMyTimerDone(object state)
    {
        Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                if (rightButton.IsPressed)
                {
                    rightButton_Click(null, null);
                }
            });
    }

这段代码一开始就可以正常工作,但是我无法单击,因为它总是调用保持事件。

4

2 回答 2

1

两个建议,第一个是在 isPressed 为 false 时停止计时器(使用 DispatcherTimer)

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 事件上停止计时器

于 2012-07-19T19:50:46.057 回答
1

尝试使用RepeatButton silverlight 控件而不是使用普通Button

这是如何使用它的示例:

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--;
}
于 2012-07-19T20:20:45.583 回答