私は、ちょうどC#を練習するために簡単な2時間から1分のコンバータを作成しようとしています。奇妙なことは、私が599秒を過ぎると、プログラムは60秒を減算します。したがって、540秒は9分に相当します。 599秒は9分59秒に等しいが、600秒は9分に等しい。私はボタンを使用してコマンドをトリガーする代わりにtextchangedボタンを使ってみました。だから、私は、問題の根本はテキスト変更イベントそのものでなければならないと思う。私は3つの例を追加します。スクリーンショットイメージはトルコ語ですが、簡単にそのアイデアを得ることができます。Textchangedイベントが正しく計算されない
どうすればこの問題を解決できますか?この問題の原因は何ですか?これは本当に心配です。
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 = "";
}
この行を削除することを強くお勧めします。second、minute、hour、minuteLeft、secondLeft; 'CalculateTime'で必要に応じて変数を宣言します。 _「second」などのフィールドは必要ありません。 – mjwills
@mjwillsこんにちは、フィードバックに感謝します。そうすることの利点は何でしょうか?コードをきれいにするには? –
はい、クリーナーにします。また、コンパイラはすぐにあなたにバグを示していたでしょう。 'var second = Convert.ToInt32(txtSure.Text); var secondLeft =秒%60; 秒=秒 - 分; var分=秒/ 60; var minuteLeft =分%60; 分=分 - 分左; var hour =分/ 60; 'あなたのバグのためにコンパイルできませんでした。これは素晴らしいです - コンパイラ(stackoverflowではなく)はあなたのために大変でした! – mjwills