将两个文本框的值相乘并显示在第三个文本框中
本文关键字:文本 显示 三个 两个 | 更新日期: 2023-09-27 17:51:17
我试图乘2个数字(一个在每个文本框),并显示在另一个文本框当我输入数字时,什么也没发生。textBox8显示2.50,textbox10显示5。
private void textBox8_TextChanged(object sender, EventArgs e)
{
Multiply();
}
private void textBox10_TextChanged(object sender, EventArgs e)
{
Multiply();
}
public void Multiply()
{
int a, b;
bool isAValid = int.TryParse(textBox8.Text, out a);
bool isBValid = int.TryParse(textBox10.Text, out b);
if (isAValid && isBValid)
textBox7.Text = (a * b).ToString();
else
textBox7.Text = "Invalid input";
}
The numbers in textBox8 are (for example) 2.50, and textBox 10 is 2
2.50
为十进制值,不能解析为int
change int.TryParse
to decimal.TryParse
int a, b;
bool isAValid = int.TryParse(textBox8.Text, out a);
bool isBValid = int.TryParse(textBox10.Text, out b);
decimal a, b;
bool isAValid = decimal.TryParse(textBox1.Text, out a);
bool isBValid = decimal.TryParse(textBox2.Text, out b);
使用double.TryParse
double a, b;
bool isAValid = double.TryParse(textBox8.Text.Trim(), out a);
bool isBValid = double.TryParse(textBox10.Text.Trim(), out b);
if (isAValid && isBValid)
textBox7.Text = (a * b).ToString();
else
textBox7.Text = "Invalid input";
textBox8中的数字为(例如)2.50,textbox10中的数字为2。
Int32.TryParse(String s, out int)
重载使用NumberStyle.Integer
和CurrentCulture
属性。这就是为什么你的2.50
失败了,而isAValid
将变成false
。使用NumberStyle.Integer
,您的字符串只能有;
- 左行空白。
- 尾随空格。
- 前导正负号。
这就是为什么isAValid && isBValid
将是false
(不管isBValid
是什么)和else语句工作的原因。
作为解决方案,您可以使用Double.TryParse
方法,它使用NumberStyles.Float| NumberStyles.AllowThousands
和CurrentCulture
,如;
double a;
bool isAValid = Double.TryParse(textBox8.Text, out a);
应该可以:
private void textBox8_TextChanged(object sender, EventArgs e)
{
Multiply();
}
private void textBox10_TextChanged(object sender, EventArgs e)
{
Multiply();
}
public void Multiply()
{
float a, b;
bool isAValid = float.TryParse(textBox8.Text, out a);
bool isBValid = float.TryParse(textBox10.Text, out b);
if (isAValid && isBValid)
textBox7.Text = (a * b).ToString();
else
textBox7.Text = "Invalid input";
}
当然,正如另一个答案所提到的,你可以使用十进制或双精度,这完全取决于你想要的精度:
float:单精度浮点数(32位)。
double:双精度浮点数(64位)。
decimal: 128位浮点。
致以最亲切的问候!