2014-10-06 5 views
0

버튼에 int 변수를 성공적으로 만들었습니다.이 변수를 에 입력했지만 그 변수를 다른 객체에 삽입하려고 시도 할 때마다 (이 경우 다른 버튼), 나는 '이름'EachVar '현재 컨텍스트에 존재하지 않는 "얻을이름 'EachVar'이 현재 컨텍스트에 존재하지 않습니다.

코드 : 코드가 기록되면

 private void Set1_Click(object sender, EventArgs e) 
    { 
     if (PAT.Text != "" && Loading1.Value != 100 && Loading1.Value - 100 <= 0) 
     { 
     int EachVar = Convert.ToInt32(PAT.Text); //The Var 'EachVar' 
     label1.Text = "Value: " + Convert.ToString(EachVar); 
     } 
    } 


    private void Start_Click(object sender, EventArgs e) 
    { 
     if (Loading1.Value + EachVar < 100) // The Error 
     { 
      Timer1.Start(); 
      Timer1.Interval = 1000; 
     } 
     else 
     { 
      Loading1.Value = 100; 
      Timer1.Stop(); 
     } 
    } 
+2

[스코프 (http://msdn.microsoft.com/ en-us/library/aa691132 % 28v = vs.71 % 29.aspx), [변수 및 메서드 범위] (http://msdn.microsoft.com/en-us/library/ms973875.aspx) –

+0

하나의 버튼 ... – mybirthname

답변

0

, 변수는/정의 {} 내에 존재됩니다 - 그것을 둘러싼 범위 - 그 방법은 Set1_Click()입니다. 이 두 방법 모두에 액세스 할 수 있도록

당신은, 그것을 외부로 정의하려면 :

// Now it can be accessed throughout the class. 
// Note that I've called it "_eachVar" to follow the naming convention for 
// fields in a class. 
private int _eachVar = 0; 

private void Set1_Click(object sender, EventArgs e) 
{ 
    if (PAT.Text != "" && Loading1.Value != 100 && Loading1.Value - 100 <= 0) 
    { 
    _eachVar = Convert.ToInt32(PAT.Text); //The Var 'EachVar' 
    label1.Text = "Value: " + Convert.ToString(EachVar); 
    } 
} 


private void Start_Click(object sender, EventArgs e) 
{ 
    if (Loading1.Value + _eachVar < 100) // The Error 
    { 
     Timer1.Start(); 
     Timer1.Interval = 1000; 
    } 
    else 
    { 
     Loading1.Value = 100; 
     Timer1.Stop(); 
    } 
} 

는 또한 등판이 필드를 숨 깁니다 속성을 사용할 수도 있습니다 ..

private int EachVar 
{ 
    get { return _eachVar; } 
    set { _eachVar = value; } 
} 

OR (대응하는 필드가 "숨겨진"이다) 자동 실행 속성 :

private int EachVar {get; set;} 
관련 문제