-3

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

4 回答 4

4

You are using the wrong textbox for your TextChanged event. Your textboxes 8 and 10 are changing but you have attached the shown code to 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();

    }
}

And finally remove the code inside textBox7_TextChanged(object sender, EventArgs e)

于 2013-07-15T21:54:52.777 回答
3

您将事件分配给了错误的控件,并且您没有检查有效输入。您可以使用它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";
        }
于 2013-07-15T22:12:19.347 回答
2

您是否遇到任何编译或错误问题?您需要给控件起有意义的名称,以便更好地区分这些控件。仔细检查您是否正确引用了控件。无论如何,您的代码应该可以工作。我下面的代码捕获到无法转换为下面的 int32。

    try
    {
        textBox7.Text = (Convert.ToInt32(textBox10.Text) * Convert.ToInt32(textBox8.Text)).ToString();
    }
    catch (System.FormatException)
    { }
于 2013-07-15T21:57:13.957 回答
0

将您的代码更改为以下内容:

私人无效 textBox7_TextChanged(对象发送者,EventArgs e){

        Int32 val1 = Convert.ToInt32(textBox10.Text);
        Int32 val2 = Convert.ToInt32(textBox8.Text);
        Int32 val3 = val1 * val2;
        textBox7.Text = Convert.ToString(val3);

    }
于 2014-02-28T04:19:23.123 回答