2013-10-03 6 views
1

나는 C#이 힘들다고 생각했다. stackoverflow에 질문을 게시 해보십시오.양식에서 tabcontrol의 /에서 사용자 콘트롤로 통신

사용자 정의 컨트롤에있는 목록 상자와 단추가 있습니다. 그 자체는 양식상의 tabcontrol 자체의 탭 페이지에 있습니다. 단추를 클릭하면 양식에서 목록 상자를 채워야합니다.

형태>을 TabControl> tabpage> UserControl을> 목록 상자 & 버튼 그래서

, 당신은 깊이 묻혀 버튼을 클릭되었음을 양식을 통지하고 폼에서 목록 상자를 채우기 (또는에서 UserControl을 호출 어떻게 양식을 사용하여 목록 상자 채우기)?

감사합니다.

+0

사용자 컨트롤에 자신 만의 공개 이벤트를 추가하기 만하면됩니다. 단추의 Click 이벤트 처리기에서 발생시킵니다. –

+0

그게 끝났어. 내가 가지고있는 문제는 그 형태로 이벤트를 포착하는 방법이다. 나는 여기서 기본적인 것을 놓치고있는 것 같다. – Lara

답변

3

귀하의 질문은 WinForms라고 가정합니다.

알림 : userControl에서 이벤트를 노출하고 버튼의 이벤트에 연결하면 양식에 자녀가 있음을 알립니다. 양식에서

public class MyUserControl { 
    private Button myButton; 
    public event EventHandler MyControlButtonClicked; 

    public MyUserControl() { 
     ... 
     myButton.Click += OnMyButtonClicked; 
    } 

    private void OnMyButtonClicked(object sender, EventArgs arguments) { 
     if (MyControlButtonClicked != null) { 
      MyControlButtonClicked(this, arguments); 
     } 
    } 
} 

:

public class MyForm { 
    private MyUserControl userControl; 

    public MyForm() { 
    ... 
    userControl.MyControlButtonClicked += OnUserControlButtonClicked; 
    } 

    private void OnUserControlButtonClicked(object sender, EventArgs arguments) { 
     // handle the button click here 
    } 
} 

인구를 들어 같은 패턴은 중재자 사용자 컨트롤을 사용합니다. listBox 채우기를 수행하고 양식에서 호출하는 public 메소드를 userControl에 추가하십시오.

+0

예, WinForms입니다. 알림 부분에 예제 코드를 올리시겠습니까? 내가 그 개념을 이해하는 동안, 나는 시도하고 실패했다. – Lara

+0

답변에 스 니펫을 추가했습니다. 나는 그것이 분명하기를 바란다. – YM67549