2012-11-06 2 views
7

내 질문에 내가 Dispatchertimer.Tick 이벤트 여기 일부 인수를 보낼 수있는 것은 코드가 얼마나입니다 : 내가이 Dispatchertimer.Tick 이벤트에 추가 인수를 보내

dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 

    private void dispatcherTimer_Tick(object sender, EventArgs e) 
    { 
     //.Text = DateTime.Now.Second.ToString(); 

    } 

dispatcheTimer_Tick

에서 정수 값을받을 원하는 것을 내가 뭘하고 싶은지는 다음과 같습니다.

private void dispatcherTimer_Tick(object sender, EventArgs e,int a) 
    { 
     //.Text = DateTime.Now.Second.ToString(); 

    } 

통화 지점에서 값을 보내는 방법 ?? 당신이 이벤트 처리기를 부착하고있는 시점에서 a을 알고 있다면

답변

0

, 당신은 같은 것을 할 수 있습니다 여러 가지 방법이 있지만

int a = 0; 
dispatcherTimer.Tick += (sender, e) => 
    { 
     /* a is available here */ 
    }; 
7

, 나는 그것이 가장 편리한 익명의 방법을 사용하여 찾을 수

int number = 5; 
dispatcherTimer.Tick += (s, args) => 
{ 
    string value = someMethod(); 
    string otherValue = DateTime.Now.Second.ToString() 
    myControl.Text = value + otherValue + number; 
} 
: 당신이 라인의 소수가있는 경우

dispatcherTimer.Tick += (s, args) => myControl.Text = DateTime.Now.Second.ToString(); 

당신은 또한 더 같은 일을 할 수있는이 일을 할 때 변수를 통해 닫습니다 6,

당신이 라인의 단지 소수의 이상이있는 경우 그때는 아마 또 다른 방법을 원하지만, 당신이 메서드를 호출하는 람다를 사용할 수 있습니다

int value = 5; 
dispatcherTimer.Tick += (s, args) => myRealMethod(someControl, value); 

public void myRealMethod(Control someControl, int value) 
{ 
    someControl.Text = value; 
} 

이 이벤트 핸들러의 모두 무시 매개 변수 편리 당신이 그들을 필요로하지 않을 때 위임한다. (나는 sender을 거의 사용하지 않는다. 필요한 경우 실제 객체를 직접 전달하여 object으로 캐스트하지 않는다.) 추가 로컬 변수를 추가 할 수있다.

+0

마지막으로 알려 주신 방법으로 저를 도왔습니다. – ahmad05

관련 문제