我正在开发一个库存系统,我在其中通过textbox1从数据库中获取数据,并且与textbox1中的条目兼容的数据出现在textbox8和textbox10中,它们是整数。现在我想将textbox8和textbox10相乘,当整数出现在textbox8和textbox10中时,结果应显示在textbox7中。
我使用这段代码进行两个文本框的乘法运算,导致第三个文本框没有出现:
private void textBox7_TextChanged(object sender, EventArgs e)
{
Int32 val1 = Convert.ToInt32(textBox10.Text);
Int32 val2 = Convert.ToInt32(textBox8.Text);
Int32 val3 = val1 * val2;
textBox7.Text = val3.ToString();
}
答案 0 :(得分:4)
您在TextChanged事件中使用了错误的文本框。您的文本框8和10正在更改,但您已将显示的代码附加到textbox7。
public MyForm : Form {
public MyForm(){
InitializeComponents();
// Here you define what TextBoxes should react on user input
textBox8.TextChanged += TextChanged;
textBox10.TextChanged += TextChanged;
}
private void TextChanged(object sender, EventArgs e)
{
int val1;
int val2;
if (!int.TryParse(textBox8.Text, out val1) || !int.TryParse(textBox10.Text, out val2))
return;
Int32 val3 = val1 * val2;
// Here you define what TextBox should show the multiplication result
textBox7.Text = val3.ToString();
}
}
最后删除textBox7_TextChanged(object sender, EventArgs e)
答案 1 :(得分:2)
您是否遇到任何编译或错误问题?您需要为控件提供有意义的名称,以便更好地区分这些控件。仔细检查您是否正确引用了控件。在任何情况下,您的代码都应该有效。我下面的代码无法转换为下面的int32。
try
{
textBox7.Text = (Convert.ToInt32(textBox10.Text) * Convert.ToInt32(textBox8.Text)).ToString();
}
catch (System.FormatException)
{ }
答案 2 :(得分:2)
您将事件分配给了错误的控件,而您没有检查有效输入。您可以使用int.TryParse
查找有效的数字输入。
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";
}
答案 3 :(得分:0)
将您的代码更改为以下内容:
private void textBox7_TextChanged(object sender,EventArgs e) {
Int32 val1 = Convert.ToInt32(textBox10.Text);
Int32 val2 = Convert.ToInt32(textBox8.Text);
Int32 val3 = val1 * val2;
textBox7.Text = Convert.ToString(val3);
}