我正在努力平均每分钟杀死的bug速度。这是我的代码,但它抛出一个错误,说字符串输入格式是错误的。有什么建议?我正在使用C#进行WPF。
//Score is the number of bugs hit
score.Text = (_killings * 1).ToString();
//Change it to integer
int x = Int32.Parse(score.Text);
int y = Int32.Parse(TBCountdown.Text); - this is where the error is showing
//Get the average speed by dividing number of bugs hit during the time
int average = (x / y);
//Displaying the average score by converting int to string
averagescore.Text = average.ToString();
有关详细信息,我正在使用调度程序计时器,这是我的计时器代码。
TBCountdown.Text = string.Format("00:0{0}:0{1}", time / 60, time % 60);
答案 0 :(得分:0)
这是您格式化文本框的方式:
TBCountdown.Text = string.Format("00:0{0}:0{1}", time / 60, time % 60);
然后你尝试将其解析为int。嗯,这不是一个int。将其解析为DateTime,或者更好的是,只使用您已有的变量(time
)。通常,依靠UI来存储数据是一个糟糕的主意。用户界面可供展示。
int y = time;
答案 1 :(得分:0)
您的代码有一些问题,我假设您正在递增变量并使用它来创建某种经过的时间。首先要说明的是Ed S.是正确的,你不应该使用你的UI来存储你的价值,创建一个支持变量并使用它。至于你的问题:我在评论中提到的第一个想到的是你试图将看起来像TimeSpan的字符串转换为整数,第二个是你的格式字符串不会转换为DateTime对象出现格式异常错误。我可以通过将Timer的Tick事件处理程序更改为此来使代码工作。
DateTime temp = DateTime.Parse(string.Format("00:{0}:{1}", time / 60, time % 60));
TBCountdown.Text = temp.ToString("00:mm:ss");
你可以使用这样的东西来获得你的Y值(你没有回复我关于你想要什么样的价值的信息)
int y = (int)TimeSpan.Parse(TBCountdown.Text).TotalSeconds;
这里有很多关于你想要什么的猜想,如果这不正确请告诉我们。
答案 2 :(得分:-2)
TBCountdown.Text = string.Format("00:0{0}:0{1}", (time / 60).ToString(), (time % 60).ToString());
记住这是一个字符串函数