C# 时钟程序不';不算

C# 时钟程序不';不算,c#,xamarin,C#,Xamarin,我是OOP的新手,我用C#在Xamarin studio上编写了简单的时钟程序。时钟的格式是00:00:00。它应该算起来,像时钟一样工作。 然而,一定有一些问题,所以我的时钟可以画在屏幕上,但不“滴答” 您的时钟没有滴答作响的原因是因为您正在使用myClock.SetClock()方法连续重置它的间隔。此方法只应在主方法中的while循环之外调用一次。尝试以下主要方法 public static void Main () { var myClock = new

我是OOP的新手,我用C#在Xamarin studio上编写了简单的时钟程序。时钟的格式是00:00:00。它应该算起来,像时钟一样工作。 然而,一定有一些问题,所以我的时钟可以画在屏幕上,但不“滴答”


您的时钟没有滴答作响的原因是因为您正在使用myClock.SetClock()方法连续重置它的间隔。此方法只应在主方法中的while循环之外调用一次。尝试以下主要方法

    public static void Main ()
    {
        var myClock = new Clock ();

        //Open the game window
        SwinGame.OpenGraphicsWindow ("GameMain", 800, 600);
        SwinGame.ShowSwinGameSplashScreen ();

        myClock.SetClock ();                  //Set clock should be called from here.
        //Run the game loop
        while (false == SwinGame.WindowCloseRequested ()) {
            //Fetch the next batch of UI interaction
            SwinGame.ProcessEvents ();

            //Clear the screen and draw the framerate
            SwinGame.ClearScreen (Color.White);
            SwinGame.DrawFramerate (0, 0);

            myClock.DrawClock ();

            if (SwinGame.MouseClicked (MouseButton.LeftButton)) {
                myClock.UpdateClock ();
            }
            if (SwinGame.MouseClicked (MouseButton.RightButton)) {
                myClock.ResetClock ();
            }

            //Draw onto the screen
            SwinGame.RefreshScreen (60);
        }
    }
和SetTimer应该如下所示

    public void SetTimer ()
    {
        timer.Interval = 1000;
        timer.Elapsed += (sender, e) => UpdateCounter ();
        timer.Start ();
    }

看起来你甚至都没有启动计时器。
而不是调用timer.Start()更新计数器()中,在timer.appeased+=(发送方,e)=>更新计数器()之后启动计时器

您还应该将变量放在一起

private int _hoursCounter;  
private int _minutesCounter;  
private int _secondsCounter;  
Timer timer;  
并在构造函数中初始化计时器:

..
_secondsCounter = 0;
timer = new Timer();

旁注:使用自动实现的属性:您试过调试它吗?当勾选发生时,它甚至会输入更新屏幕的方法吗?首先,您应该调试代码以查看发生了什么。可能在
SetTimer
中添加
timer.Enabled=true
使其工作?旁注-无需在方法名称和括号之间加空格。。。花括号应该在C#中的新行中。我知道它没有回答,但代码正在干扰我的大脑,这只是一堵巨大的文本墙,这里没有人会去调试。我试过你的方法,但还是不管用。。我想让用户选择启动时钟,所以我把timer.start放在UpdateCounter()中。您应该提供更多关于什么不起作用的信息,在变量和构造方法上设置断点,然后按f10查看什么在改变什么不改变。很明显你错过了什么。
..
_secondsCounter = 0;
timer = new Timer();