2016-03-06 3 views
0

Я довольно новичок в кодировании и хотел бы помочь Итак, я пытаюсь сделать калькулятор%: В текстовом поле 1 вы вводите, скажем, «75%», а затем в текстовое поле 2 вы введите, например, «1000» в текстовое поле 3, скажем, 750.C# использовать ints в других классах

Но моя проблема в том, что теперь, только когда я редактирую текстовое поле 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

Ваш ответ слишком широк для stackoverflow, вам лучше читать [Область переменных и методов в Microsoft .NET] (https://msdn.microsoft.com/en-us/library/ms973875.aspx) – Sayse

+0

Это не переменные класса, они являются локальными переменными (в области «xylosTextBox2_TextChanged»). –

ответ

1

Почему вы не просто добавить же EventHandler вашего 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

Не инициализируйте значения вне метода. –

Смежные вопросы