C#在其他类中使用int

时间:2016-03-06 21:55:34

标签: c#

我对编码很新,想要一些帮助 所以我正在尝试制作一个%计算器:在文本框1中输入,比如说“75%”,然后在文本框2中输入,例如,文本框3中的“1000”就会说750。

但我的问题是,现在只有当我编辑文本框2第三个更改时,我希望能够修改txtbox1中的值。

   public void xylosTextBox2_TextChanged(object sender, EventArgs e)
    {
        //---------------------------------------------------------------------------

        Int32 val1 = Convert.ToInt32(xylosTextBox1.Text);
        Int32 val2 = Convert.ToInt32(xylosTextBox2.Text);
        Int32 val3 = val2 * val1 / 100;
        Int32 val5 = val1 + val2;

        int t1 = Convert.ToInt32(xylosTextBox1.Text);
        int t2 = Convert.ToInt32(xylosTextBox2.Text);
        int t3 = val5; 
        //-----------------------------------------------------------------------------

        if (val5 > 1)
        {
            xylosTextBox3.Text = val3.ToString();
        }


    }

现在我去

private void xylosTextBox1_TextChanged(object sender, EventArgs e)

尝试输入val5> 1它说它不识别val5

private void xylosTextBox1_TextChanged(object sender, EventArgs e)
            if (val5 > 1)
            {
                xylosTextBox3.Text = val3.ToString();
            }

2 个答案:

答案 0 :(得分:3)

如果您在xylosTextBox2_TextChanged()内声明变量,则xylosTextBox1_TextChanged()无法看到该变量。你必须在方法之外声明它:

int val1, val2, val3, val4, val5;

public void xylosTextBox2_TextChanged(object sender, EventArgs e)
{
    //---------------------------------------------------------------------------

    val1 = Convert.ToInt32(xylosTextBox1.Text);
    val2 = Convert.ToInt32(xylosTextBox2.Text);
    val3 = val2 * val1 / 100;
    val5 = val1 + val2;

    int t1 = Convert.ToInt32(xylosTextBox1.Text);
    int t2 = Convert.ToInt32(xylosTextBox2.Text);
    int t3 = val5; 
    //-----------------------------------------------------------------------------

    if (val5 > 1)
    {
        xylosTextBox3.Text = val3.ToString();
    }


}

答案 1 :(得分:1)

为什么不将xylosTextBox2的相同EventHandler添加到xylosTextBox1中。这样,无论何时首先更新第一个或第二个文本框,您都将进行计算并更新第三个文本框。

xylosTextBox1.TextChanged += xylosTextBox2_TextChanged;
xylosTextBox2.TextChanged += xylosTextBox2_TextChanged;

请注意,如果你使用它,你应该将xylosTextBox2_TextChanged的名称更改为更合适的名称。