首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >激活时调用Presenter的方法

激活时调用Presenter的方法
EN

Stack Overflow用户
提问于 2013-09-03 22:15:07
回答 1查看 143关注 0票数 0

我正在使用智能客户端软件工厂2008。在模块控制器中,我有一些代码,只有在还没有创建新的子控制器的情况下才会创建它,方法如下:

代码语言:javascript
复制
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

多个项重用相同的键,因此当该操作被触发时,它将显示选项卡,而不是创建选项卡的新实例。这很好用。

然而,有一个缺点。激活后,我需要在该项目的演示者中运行检查。所以我需要在presenter上调用一个方法。有没有办法在presenter上调用一个方法,或者当工作项被激活时,是否有一个事件在视图上运行?我不知道该怎么做?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-09-16 02:05:58

如果您使用Smart Part作为视图,则应该能够使用IWorkspace.SmartPartActivated事件来完成此操作。

这就是我如何在我的项目中设置它。我很抱歉,我的代码都是用C#编写的,但你应该可以相对容易地在VB中应用它。

WorkItemController类的Activate方法设置如下

代码语言:javascript
复制
ISmartPartView _smartPartView

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

在ISmartPartView Presenter类中,您应该能够为SmartPartActivated事件创建一个处理程序,如下所示:

代码语言:javascript
复制
IWorkspace contentWorkspace = this.WorkItem.Workspaces[WorkspaceNames.ShellContentWorkspace];
contentWorkspace.SmartPartActivated += workSpaceSmartPart_ActivatedHandler;

workSpaceSmartPart_ActivatedHandler事件处理程序中,您可以检查被激活的SmartPart,如果它是您的ISmartPartView类,则可以运行所需的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18594585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档