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