2016-03-06 94 views
0

我很新的编码,想要一些帮助 所以我想做一个%计算器:在文本框1中输入,比如说,“75%”然后在文本框2中你例如,在文本框3中的“1000”,它会说750.C#在其他类中使用整数

但我的问题是,现在只有当我编辑文本框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(); 
      } 
+0

您的回答对于计算器来说太宽泛了,您最好阅读[Microsoft .NET中的变量和方法范围](https://msdn.microsoft.com/en-us/library/ms973875.aspx) – Sayse

+0

那些不是类变量,它们是局部变量(在'xylosTextBox2_TextChanged'范围内)。 –

回答

1

你为什么不只是添加xylosTextBox2的同一事件处理程序到你的xylosTextBox1。这样,无论何时您首先更新第一个或第二个文本框,您都将执行计算并更新第三个文本框。

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

作为一个说明,如果你有这个去了,你应该在xylosTextBox2_TextChanged的名称更改为更具apropriate。

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(); 
    } 


} 
+0

错误字段初始值设定项无法引用非静态字段,方法或属性'CSGO_Value.Form1.xylosTextBox1'\t 当我这样做时出现此错误? – user2227874

+0

不要初始化方法外的值。 –