将两个文本框的值相乘并在第三个文本框中显示结果

时间:2013-07-15 21:50:45

标签: c# .net winforms

我正在开发一个库存系统,我在其中通过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();

        }

4 个答案:

答案 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);

    }