2011-12-13 3 views

답변

6

일반적으로 다른 클래스의 이벤트를 호출하지 않습니다. 이벤트는 구독/구독 취소 동작을 노출한다는 아이디어입니다. 구현은 을 선택하여 이벤트를 발생시키는 메소드를 노출 할 수 있지만 반드시 사용해야하는 것은 아닙니다. 사용중인 컨트롤이 SelectedIndexChanged 이벤트에 대해 이러한 메소드를 노출하지 않으면 강제로 실행할 수 없습니다. 에.

달성하려는 목표가 명확하지 않지만 적절한 방법으로 적절한 탭을 선택할 수 있습니다. 적절한 이벤트를 발생시킬 것으로 기대합니다. 탭 컨트롤을 Form1에서 Form2으로 직접 노출하는 것보다 (단지 자리 표시 자 이름 만 사용하면됩니다. 양식에 의미있는 이름을 지정하십시오.) Form1의 메소드를 노출하여 해당 탭을 선택하는 것이 더 깔끔합니다. 이는 구현 세부 사항에 크게 의존하지 않고 Form1에서 수행하는 더 의미있는 작업입니다. 반면에 MVP 패턴 (또는 자신이 가장 잘 어울리는 것)을 사용하여 더욱 깨끗한 디자인을 만들 수 있습니다.

+0

나는 그것을 해냈다. 지금은 잘 일했다. John에게 다시 한번 감사 드려라! –

+1

@TheMask : 이벤트 처리기를 전용 메서드로 유지하면 더 좋지만 일반적으로 더 적절하게 호출되는 경우에는 더 좋을 것입니다. * 또한 외부 적으로 불리는 명명 된 방법. –

3

필요한 논리를 수행하는 첫 번째 양식에서 공용 메서드를 만들어야합니다.

그런 다음 첫 번째 양식의 인스턴스를 두 번째 양식으로 전달하고 해당 인스턴스에서 메소드를 호출하십시오.

+0

나는 그것을했다. 이제'form1.tabControl1_SelectedIndexChanged'를'form2'에 공개 멤버로 가지고 있습니다. 그리고 할 수 있습니다 :'parentForm.tabControl1_SelectedIndexChanged (??, null)'내 질문은 지금이다 - 그것은 public 멤버로 tabControl1 컨트롤을 선언 할 수 있습니까? –

2

Jon이 언급했듯이 공개하지 말아야합니다 ... 이전에 명시 적으로 두 가지 양식을 작성하고 앞뒤로 전달하는 방법을 설명하는 다른 샘플이 있습니다. Check these out

관련 문제