2012-03-12 4 views
0

안녕하세요 폼에 참조 될 Button이있는 사용자 정의 컨트롤이있는 테스트 응용 프로그램을 만들고 있습니다. 사용자 정의 컨트롤에서 인터페이스 함수를 구현하는 방법

enter image description here

은 가능한 난 그냥에만 인터페이스 기능을 구현해야 것을

public partial class UserControl1 : UserControl 
{ 
    public UserControl1() 
    { 
     InitializeComponent(); 

    } 
    private void button1_Click(object sender, EventArgs e) 
    { 
     //CALL ICRUD.Test() execute when click on form1 and then show I am Clicked 
    } 
} 

때문에 사용자 제어 button1을 클릭 이벤트에 대한 인터페이스

public interface ICRUD 
    { 
     void Test(); 
    } 

을 결합하는 것입니다 내 form1.

를 Form1 : 감사에서

using System.Windows.Forms; 
namespace TEST 
{ 
    public partial class Form1 : Form , ICRUD 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     public void Test() 
     { 
      MessageBox.Show("I am Clicked"); 
     } 
    } 
} 

감사합니다.

+0

동일한 질문을 삭제하고 다시 거는 횟수는 몇 번입니까? –

+0

사용자 정의 컨트롤에 ICRUD 유형의 속성을 가질 수 있으며이 속성을 양식에서 설정할 수 있습니다. –

+0

@ M.Babcock은 FAQ를 보내 주셔서 감사합니다. 저의 마지막 질문입니다. 그리고 샘플 이미지를 첨부하여 제 질문을 훨씬 더 명확하게 만들었습니다 .. :) – BizApps

답변

0

이것은 나에게 맞는 것 같지 않습니다. 이 인터페이스를 구현해야하는 것은 아마도 Form이 아닙니다. 게다가 인터페이스는 여기에 어떤 것도 가져 오지 않습니다.

하지만 당신이 정말로 그렇게하려면, 당신은 방법, the ParentForm property에 액세스하여 사용자 인터페이스로 캐스팅 한 후 호출 할 수 있습니다 : 적어도 (

private void button1_Click(object sender, EventArgs e) 
{ 
    var crud = (ICrud)ParentForm; 
    crud.Test(); 
} 

또한, 닷넷의 규칙은 약어를 작성하는 것입니다을 긴 단어)는 다른 단어와 동일하므로 인터페이스 이름을 ICrud으로 지정해야합니다.

+0

와우! 감사합니다 @ svick..its 완벽 .. Logged – BizApps

0
private void button1_Click(object sender, EventArgs e) 
{ 
    for(var parent = this.Parent; parent != null; parent = parent.Parent) 
    { 
     var crud = parent as ICRUD; 
     if (crud != null) 
     { 
     crud.Test(); 
     break; 
     } 
    } 
} 
관련 문제