2015-01-20 2 views
0

저는 Windows Forms에 대한 멍청한 반응을 보입니다. 단추 및 텍스트 필드가있는 자식 구성 요소가 있습니다. 부모 구성 요소 나 폼에서 이러한 인스턴스를 여러 개 사용하고 싶습니다. 런타임에 사용자가 단추 중 하나를 클릭하면 부모가 이벤트를 가져 와서 관련 텍스트로 수행 할 작업을 결정하기를 원합니다.자식 처리 C++의 Windows Forms 구성 요소에있는 이벤트

오랫동안 길을 잃은 Borland C++ Builder의 디자인 타임 중에는 버튼을 두 번 클릭하면 상위에있는 핸들러가 만들어져 코드를 자세히 설명 할 수 있습니다. Windows Forms에서는 구성 요소 컨트롤이 부모로부터 클릭 할 수 없으며 (디자인 타임에) "고정"됩니다. 부모에게 자식 버튼 클릭을 전달하는 방법은 분명하지 않습니다. 버튼 수정자가 개인에서 공용으로 변경하는 등의 작업을 시도했지만 도움이되지 않습니다. 어떻게이 것이 가장 잘 이루어 집니까.

참고 헤더 파일 정의를 관련 C++ 임베디드 응용 프로그램과 공유하므로 C++을 사용하고 있습니다.

- 밥

답변

0

UPDATE :

나의 사과, 나는 당신이 실제로 최대 거품 원한다면 나는 내 C# 검색 :(이 약간 복잡


여전히 알았는데 이벤트를 사용하거나 메서드를 사용하면 매우 쉽습니다.

하위 컨테이너에 상위를 가져 와서 저장하는 생성자 또는 속성을 추가하십시오. 그런 다음 버튼 핸들러에서 this.Parent.ButtonClicked(this);을 호출하고 물론 부모 클래스에 ButtonClicked(ChildType child) 메소드를 추가합니다. 그렇게하면 당신을 거기에 데려다 줄 것입니다.

사용자 정의 이벤트 :

이벤트를 사용하려면, 당신은 몇 가지를 추가해야합니다.

class ChildClickedEventArgs : EventArgs 
{ 
    // include a ctor and property to store and retrieve the child instance. 
} 

그리고 그것을 위해 공공 대리인을 추가 : 첫째, 같은 사용자 정의 EventArgs 클래스를 추가

public event ChildClickedEventHandler ChildClicked; 

:

다음
public delegate void ChildClickedEventHandler(object sender, ChildClickedEventArgs e); 

아이 클래스하려면은 buttonClicked 이벤트를 추가 마지막으로 도우미 메서드를 올리는 방법 :

private OnButtonClicked() 
{ 
    if (this.ChildClicked != null) 
    { 
     this.ChildClicked(this, new ChildClickedEventArgs(this)); 
    } 
} 

부모 클래스에 자식 클래스를 추가 할 때 각각에 대한 이벤트 처리기를 추가하면 사용자 지정 컨트롤에 대한 사용자 지정 이벤트를 처리 할 수 ​​있습니다.

는 다른 방법 : 당신이 당신의 자식 클래스에있는 버튼을 노출 할 수있는 경우

것은, 단순히 위의 작업을 수행하지만 절약 이벤트 처리기를 직접 추가, this.child.Button.Clicked에 등록.

+0

감사합니다 ... 나는 이러한 옵션을 제공 할 것입니다! –

관련 문제