2

ボタンイベントで少し問題が発生しました。特定の値を1(クリック)減らすように1つのボタンをプログラムしましたが、ボタンを押したまま、時間の経過とともに値を減らしたいと考えています。XNAではなくSilverlightを使用しています。

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

このコードは最初は正しく機能していますが、常にholdイベントを呼び出しているため、シングルタップできません。

4

2 に答える 2

1

2つの提案。最初の提案は、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
    }
}

2つ目は、MouseLeftButtonUpイベントでタイマーを停止することです。

于 2012-07-19T19:50:46.057 に答える
1

通常のボタンを使用する代わりに、 RepeatButtonSilverlightコントロールを使用してみてください

使用方法の例を次に示します。

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 に答える