2016-03-06 93 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

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