【问题标题】:how to stop a stopwatch with a button click in Xamarin?如何通过在 Xamarin 中单击按钮来停止秒表?
【发布时间】:2017-03-26 16:17:20
【问题描述】:

目标是衡量用户的反应时间。单击开始按钮 3-10 秒后,它应该启动秒表并使停止按钮可见。用户单击停止按钮后,它应该停止手表并显示用户响应所用的毫秒数。

我无法想出一个解决方案来解决如何实现一个循环来检查按钮是否被按下并在不阻止用户点击按钮的情况下停止手表。

public partial class Main : ContentPage
{

    public Main()
    {
        InitializeComponent();
    }
    public void OnStartClicked(object sender,EventArgs args)
    {
        Stopwatch stopWatch = new Stopwatch();
        startButton.IsVisible = false;
        BG.BackgroundColor = Color.Red;
        status_text.Text = "Get Ready";
        Random R = new Random();

         Device.StartTimer(TimeSpan.FromSeconds(R.Next(3, 10)), () =>
         {

             stopWatch.Start();
             stopButton.IsVisible = true;
             BG.BackgroundColor = Color.Green;


             long elapsed = stopWatch.ElapsedMilliseconds;
             stopWatch.Stop();
             status_text.Text = elapsed.ToString();
             return false;
         });
    }

}}

【问题讨论】:

    标签: xamarin timer xamarin.forms stopwatch


    【解决方案1】:

    将 StopWatch 用作成员变量,并在 OnStopClicked-Event 中停止手表。读取停止后经过的时间。除了 button.IsVisible,您还可以使用 button.IsEnabled

    public partial class MainPage : ContentPage
    {
        Stopwatch mStopWatch = new Stopwatch();
    
        public MainPage()
        {
            InitializeComponent();
        }
    
        private void StartButton_Clicked(object sender, EventArgs e)
        {                       
            startButton.IsVisible = false;
            BG.BackgroundColor = Color.Red;
            status_text.Text = "Get Ready";
            Random R = new Random();
    
            Device.StartTimer(TimeSpan.FromSeconds(R.Next(3, 10)), () =>
            {
                mStopWatch.Start();
                stopButton.IsVisible = true;
                BG.BackgroundColor = Color.Green;                
                return false;
            });
        }
    
        private void StopButton_Clicked(object sender, EventArgs e)
        {
            mStopWatch.Stop();
            long elapsed = mStopWatch.ElapsedMilliseconds;            
            status_text.Text = elapsed.ToString();
            mStopWatch.Reset();
            stopButton.IsVisible = false;
            startButton.IsVisible = true;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 2021-01-19
      • 2016-08-14
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多