我一直試圖做一個簡單的秒到小時和分鐘轉換器只是爲了練習一些C#。奇怪的是,當我通過599秒標記時,程序減去60秒。所以,540秒等於9分鐘; 599秒等於9分59秒,但600秒等於9分鐘。我試着用一個按鈕來觸發命令而不是textchanged,並且按鈕做得很好。所以,我認爲,問題的根源必須是textchanged事件本身。我將增加三個例子。截圖圖像是土耳其語,但你會很容易明白。Textchanged事件將無法正確計算
我該如何解決這個問題,以及導致這個問題的原因是什麼?這真的讓人難以置信。這應該被減去secondLeft值
second = second - minuteLeft;
:
int second, minute, hour, minuteLeft, secondLeft;
private void txtTime_TextChanged(object sender, EventArgs e)
{
CalculateTime();
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
void CalculateTime()
{
if (txtTime.Text != "")
{
second = Convert.ToInt32(txtSure.Text);
secondLeft = second % 60;
second = second - minuteLeft;
minute = second/60;
minuteLeft = minute % 60;
minute = minute - minuteLeft;
hour = minute/60;
lblMsg.Text = hour.ToString() + " hours, " + minuteLeft.ToString() + " minutes " + secondLeft.ToString() + " seconds.";
}
else
{
lblMsg.Text = "";
}
我強烈建議刪除這條線'int second,minute,hour,minuteLeft,secondLeft;',然後根據需要在'CalculateTime'中聲明變量。 _不需要'second''等字段._ – mjwills
@mjwills嗨,感謝您的反饋。這樣做的好處是什麼?爲了使代碼更清潔? –
是的,使它更清潔。而且,編譯器會立即向您顯示錯誤。 'var second = Convert.ToInt32(txtSure.Text); var secondLeft = second%60; second = second - minuteLeft; var minute = second/60; var minuteLeft = minute%60; 分鐘=分鐘 - 分鐘左邊; var hour = minute/60;''不會編譯 - 因爲你的bug。這很好 - 編譯器(而不是stackoverflow)爲你做了很多努力! – mjwills