2014-10-23 4 views
0

나는 C#에서 프로그래밍 해요. Button을 생성하고, 이름과 이벤트를 지정하는 함수가 필요합니다. 나는 그 이름과 사건들을 논증으로 전달할 필요가있다.인수로 void

createButton("cmdPrint", this.Hover, this.Print); 
    createButton("cmdMark", this.Hover, this.Mark); 

호출이 오류를 생성합니다 : createButton (문자열, 시스템에 대한 "최선의 오버로드 된 메서드 일치 내가이 전화를 코드의 다른 부분에서

private void createButton(string name, EventHandler hover, EventHandler click) 
    { 
     Button button = new Button(); 
     button.Name = name; 
     button.Image = Properties.Resources.print_trans; 
     button.MouseHover += new System.EventHandler(hover); 
     button.Click += new System.EventHandler(click); 
     button.Visible = false; 
     this.Controls.Add(button); 
    } 

:이 일을했다. EventHandler, System.EventHandler) '잘못된 인수가 있습니다. ".

어떤 유형의 인수가 가되어야합니까?을 클릭할까요?

편집 :

존 :

private void Hover(object sender, EventArgs e) 
    { 
     Proofs.ShowInformation((Control)sender); 
    } 

    private void Print(object sender, EventArgs e) 
    { 
     Proofs.Print((Control).sender); 
    } 

두 개의 전화 라인이 같은 오류가 발생 : 호버인쇄는 이벤트입니다.

스티브 : 내 이벤트 인쇄호버는 전형적인 이벤트 구문을 가지고,하지만 난 가져가createButton 기능에 클릭이 있어야합니다 어떤 종류의 모르겠어요.

편집 2 :

내 문제가 해결되었습니다. (에 createButton를)

Del print = this.Imprimir; 
Del hover = this.Hover;   
createButton("cmdPrint", this.Hover, this.Print); 
createButton("cmdMark", this.Hover, this.Mark); 

그리고 인수를 변경 :

private delegate void Del(object sender, EventArgs e); 

변경 호출 : 난 그냥이 대리인을 추가

private void createButton(string name, Del hover, Del click) 

덕분에 많이.

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public delegate void EventHandler(
    Object sender, 
    EventArgs e 
) 

이 당신을 알려줍니다 당신이 EventHandler on the MSDN website를 보면

void MyFunction(Object sender, EventArgs e) 

, 당신은이 대표의 구문 설명 볼 수 있습니다

+2

그럼'이. 호버'와'this.Print'는 무엇을 의미합니까? 그리고 그 두 라인 중 어느 것이 문제를 일으키는 것입니까? 문제를 보여주는 짧지만 완전한 * 프로그램을 제공하면 도움이 될 것입니다. –

답변

1

두 개의 이벤트 핸들러 파라미터가이 서명이 기능해야한다 반환 유형 및 해당 서명의 매개 변수 유형

관련 문제