2013-09-03 2 views
0

스마트 클라이언트 소프트웨어 팩토리 2008을 사용하고 있습니다. 모듈 컨트롤러에서 다음과 같은 작업을 수행하여 모듈이 생성되지 않은 경우에만 새 하위 컨트롤러를 만드는 코드가 있습니다.활성화시 발표자 호출 방법

Dim key = "Item-" + item.ID.ToString() 
Dim childWorkItem = Me.WorkItem.WorkItems.Get(Of ControlledWorkItem(Of ItemWorkItemController))(key) 
If childWorkItem Is Nothing Then 
    childWorkItem = Me.WorkItem.WorkItems.AddNew(Of ControlledWorkItem(Of ItemWorkItemController))(key) 
Else 
    childWorkItem.Activate() 
End If 

여러 항목이 동일한 키를 다시 사용하므로 해당 작업이 트리거되면 새 항목을 만드는 대신 탭이 표시됩니다. 이것은 잘 작동합니다.

그러나 한 가지 단점이 있습니다. 활성화되면 해당 항목의 발표자 내에서 수표를 실행해야합니다. 그래서 발표자에게 메서드를 호출해야합니다. 발표자의 메소드를 호출 할 수있는 방법이 있습니까, 아니면 작업 항목이 활성화 될 때보기에서 실행되는 이벤트가 있습니까? 그 일을 어떻게해야할지 모르겠습니다.

감사합니다.

답변

0

Smart Part을보기로 사용하는 경우 IWorkspace.SmartPartActivated 이벤트를 사용하여이를 수행 할 수 있어야합니다.

이것은 내 프로젝트에서 설정 한 것입니다. 죄송합니다. 내 코드는 모두 C#이지만 VB에서 비교적 쉽게 적용 할 수 있어야합니다. 에서

IWorkspace contentWorkspace = this.WorkItem.Workspaces[WorkspaceNames.ShellContentWorkspace]; 
contentWorkspace.SmartPartActivated += workSpaceSmartPart_ActivatedHandler; 

:

WorkItemController 클래스는 ISmartPartView 발표자 클래스에서이

ISmartPartView _smartPartView 

public void Activate() 
{ 
    IWorkspace contentWorkspace = this.WorkItem.Workspaces[WorkspaceNames.ShellContentWorkspace]; 
    contentWorkspace.Activate(_smartPartView); 
    WorkItem.Activate(); 
} 

같은 Activate 방법 설정이 같은 SmartPartActivated 이벤트에 대한 처리기를 만들 수있을 것입니다있다 workSpaceSmartPart_ActivatedHandler 이벤트 처리기를 사용하면 활성화 된 SmartPart를 확인하고 ISmartPartView 클래스에서 원하는 코드를 실행할 수 있는지 확인할 수 있습니다.