2011-04-22 4 views
0

안녕하세요.이 오류를 해결하는 방법에 대해 조언 해 줄 수 있습니까?
이 스레드의 응답이 here이지만 불행히도 작성자의 응답이 없습니다. 그래서 나는 그의 해결책으로 다시 여기에 올리기로 결정했다.내 사용자 컨트롤에 오류가 발생했습니다

ERROR : 1 암시 '은 System.EventHandler'

오류로 유형 'project1.Utility.AdminController.AdminControllerEvent을'변환 할 수 없습니다 오류 내가

//btnDelete.Click += new AdminControllerEvent(btnDelete_Click);

namespace project1.Utility 
{ 
    public partial class AdminController : UserControl 
    { 
     public delegate void AdminControllerEvent(object sender, AdminControllerEventArgs e); 

    public event AdminControllerEvent SaveClick; 
    public event AdminControllerEvent DeleteClick; 

    public AdminController() 
    { 
     InitializeComponent(); 
     //btnDelete.Click += new AdminControllerEvent(btnDelete_Click); 
    } 

    private void btnDelete_Click(object sender, AdminControllerEventArgs e) 
    { 
     if (DeleteClick != null) 
     { 
      if (MessageBox.Show(CoreMessages.DeleteAsk, CoreMessages.DeleteAsk, MessageBoxButtons.OKCancel) == DialogResult.OK) 
      { 
       DeleteClick(sender, e); 

       if (AdminControllerEventArgs.Success) 
       { 
        MessageBox.Show(CoreMessages.DeleteSuccess, CoreMessages.Successful, MessageBoxButtons.OK, MessageBoxIcon.Information); 
       } 
       else 
       { 
        MessageBox.Show(CoreMessages.DeleteFailed, CoreMessages.Failed, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
       } 
      } 
     } 
    } 
} 

public class AdminControllerEventArgs : EventArgs 
{ 
    public static bool Success; 

    public AdminControllerEventArgs() 
     : base() 
    { 
     Success = true; 
    } 
} 
후크 할 때 발생하는

}


내 형태로

는 이벤트 ClickSystem.EventHandler 설명 서명을 구현하는 핸들러를 기대 UI

private void adminController_DeleteClick(object sender, AdminControllerEventArgs e) 
    { 
     Repository.Delete(user); 
    } 
+0

오류는 무엇을 말하는가? – V4Vendetta

+0

나는 오류를 추가했습니다 : – VeecoTech

+0

클릭하여 이미 정의한 것과 다른 서명이있는 Button이있는 이벤트입니다. 따라서이를 매핑 할 수 없습니다 – V4Vendetta

답변

1

을 삭제합니다. 작동하지 않습니다. 서명을 변경하거나 Click에 대한 사용자 지정 처리기를 구현하여 사용자 지정 처리기를 호출하는 다른 이벤트를 발생시켜야합니다. 여기에 다른 UI 메시지 등과 이벤트 처리기 코드를 섞어서 어떤 작업을해야하는지 잘 모르겠습니다.

+0

이 스레드로부터 응답을 받았습니다 http://stackoverflow.com/questions/5429841/simplify-crud-button/5431378#comment- 6585267 불행히도 저자의 응답이 없습니다. 그래서 나는 그의 해결책으로 다시 여기에 올리기로 결정했다. 그의 코드를 살펴볼 수 있습니까? – VeecoTech

+0

링크 된 예제는 작동 할 수있는 시그니처에 항상'EventHandler'를 사용합니다. 문제는 커스텀 시그니처를 사용하려고합니다. – Mario

+0

그는 EventHandler를 사용하지 않았다고 생각합니다. 'public 이벤트 AdminControllerEvent DeleteClick;'라인을 보겠습니다. DeleteClick (sender, e);'라인에서, DeleteClick (,)은 (객체 발신자 AdminControllerEventArgs e)를 필요로합니다. – VeecoTech

0

Button.Click 일반 EventArgs 인수로 Click 이벤트가 발생합니다. Click(object sender, EventArgs e)이 더 구체적인 메서드 서명 (AdminControllerEventArgs 인수 사용)과 함께 작동한다고 기대할 수 없습니다. EventArgs를 AdminControllerEventArgs로 어떻게 변환합니까?

tho가 작동한다고 상상해보십시오. 어떤 경우에 발생합니다

  • Button.Click이 new EventArgs()
  • Button.Click이 btnDelete_Click(this, args)
  • args 유형 AdminControllerEventArgs
  • 이 될 것으로 예상된다 통화 생성 ...하지만 사실이다 EventArgs
  • 당신의 btnDelete_Click의 코드가 args.Success 속성
  • ...에 액세스하려고 시도 했으므로 EventArgs에는 가지고 있지 않음

불행히도이 문제를 해결할 방법이 필요합니다.

1

여기서 문제는 메서드의 서명입니다. 버튼 클릭 이벤트에는 전달할 이벤트 데이터가 없으며 규칙에 따라 두 개의 매개 변수가 있습니다. 가 더 이벤트 버튼 클릭가 인식하지 못하는 당신이 만든 이후 구현 그래서 EventArgs입니다를 사용하여 전달하는 데이터 및이 없기 때문에

때문에 오류

+0

이 질문에 도움이 되었습니까? – V4Vendetta

관련 문제