2013-07-12 2 views
0

그래서 간단히 MyReader를 EventHandler 함수에 전달하려고합니다. "=>"연산자를 사용해야한다는 것을 알고 있지만 여전히 오류가 발생합니다. 여기 내 코드는 다음과 같습니다매우 간단한 람다/이벤트 매개 변수 Prob

PD.PrintPage += (sender, ev) => this.pd_PrintPage(sender, ev, MyReader); 

//... 

private void pd_PrintPage(object sender, PrintPageEventArgs ev, StringReader reader) 
{ 
    //... 
} 

당신은 괄호 (object sender, PrintPageEventArgs ev)가 PD.PrintPage 인수를 지정하고 기능을 원하는 :

 private void PrintButton_Click(object sender, RoutedEventArgs e) 
    { 
     StringReader MyReader= new StringReader(StrTxt); 
     PD.PrintPage += new PrintPageEventHandler(this.pd_PrintPage); 
    } 

    private void pd_PrintPage(object sender, PrintPageEventArgs ev) 
    { 
    } 
+0

글쎄, 어떤 오류가 발생합니까? 여기에 단서를주십시오 ... –

+0

PrintPageEventHandler는 StringReader를 사용하지 않으므로 어떻게 함수에 전달할 계획입니까? csharpler의 솔루션은 여러분이 구체적으로 물어 본 것을 이루기 위해 노력하지만 여기서 다른 일이 일어나고 있는지 궁금해합니다 ... – Tim

+0

다음은 오류입니다 – user1819301

답변

4

가 보낸 사람에게 추가로 인수하고있는 EventArgs로 사용 => 연산자 뒤에 사용하십시오. 당신이 여분의 개체를 전달하려면

+0

이 오류를 수신하고 있습니다 ... 'sender'라는 로컬 변수를 사용할 수 없습니다 이 범위에서 '보낸 사람'에게 다른 의미를 부여했기 때문에 이미 다른 이름을 나타 내기 위해 '부모 또는 현재'범위에 사용되었습니다. – user1819301

+0

다음 예는 단지's'와 같은 다른 이름을 사용합니다 : 'PD .PrintPage + = (s, ev) => this.pd_PrintPage (s, ev, MyReader); ' – pascalhein

+0

감사합니다. cshplpler. 당신이 그것을 할 수 있다는 것을 깨닫지 못했습니다, 롤. – user1819301

0

, 당신은 매개 변수로 노출 할 수 있습니다 :

private void pd_PrintPage(object sender, PrintPageEventArgs ev, StringReader reader) 
{ 
} 

이 그럼 당신은 사용할 수 있습니다

PD.PrintPage += (sender, args) => this.pd_PrintPage(sender, args, MyReader); 

참고하면 이 필요가 없습니다 => 여기에서 사용하지만 예 : 편리하면 이렇게하면됩니다. 똑같은 일을하는 데에는 적어도 두 가지 다른 방법이 있습니다.