編輯

共用方式為


WorkflowDesignerLoader Constructor

Definition

When implemented in a derived class, initializes a new instance of the WorkflowDesignerLoader class.

protected:
 WorkflowDesignerLoader();
protected WorkflowDesignerLoader ();
Protected Sub New ()

Examples

The following example demonstrates how to create a new instance of a WorkflowDesignerLoader object. In this case, the WorkflowLoader class is derived from WorkflowDesignerLoader. When the WorkflowDesignerLoader is created, a DesignSurface is also created and associated with the WorkflowDesignerLoader using the BeginLoad method.

private ICollection LoadWorkflow(Type workflowType)
{
    WorkflowLoader loader = new WorkflowLoader();
    loader.WorkflowType = workflowType;

    return LoadWorkflow(loader);
}

private ICollection LoadWorkflow(WorkflowLoader loader)
{
    SuspendLayout();

    DesignSurface designSurface = new DesignSurface();
    designSurface.BeginLoad(loader);
    if (designSurface.LoadErrors.Count > 0)
        return designSurface.LoadErrors;

    IDesignerHost designerHost = designSurface.GetService(typeof(IDesignerHost)) as IDesignerHost;
    if (designerHost != null && designerHost.RootComponent != null)
    {
        IRootDesigner rootDesigner = designerHost.GetDesigner(designerHost.RootComponent) as IRootDesigner;
        if (rootDesigner != null)
        {
            UnloadWorkflow();

            this.designSurface = designSurface;
            this.loader = loader;
            this.workflowView = rootDesigner.GetView(ViewTechnology.Default) as WorkflowView;
            this.splitContainer1.Panel1.Controls.Add(this.workflowView);
            this.workflowView.Dock = DockStyle.Fill;
            this.workflowView.TabIndex = 1;
            this.workflowView.TabStop = true;
            this.workflowView.HScrollBar.TabStop = false;
            this.workflowView.VScrollBar.TabStop = false;
            this.workflowView.ShadowDepth = 0;
            this.workflowView.EnableFitToScreen = true;
            this.workflowView.Focus();

            ISelectionService selectionService = GetService(typeof(ISelectionService)) as ISelectionService;
            IComponentChangeService changeService = GetService(typeof(IComponentChangeService)) as IComponentChangeService;

            if (selectionService != null)
            {
                selectionService.SelectionChanged += new EventHandler(OnSelectionChanged);
            }

            if (changeService != null)
            {
                changeService.ComponentAdded += new ComponentEventHandler(changeService_ComponentAdded);
                changeService.ComponentChanged += new ComponentChangedEventHandler(changeService_ComponentChanged);
                changeService.ComponentRemoved += new ComponentEventHandler(changeService_ComponentRemoved);
                changeService.ComponentRename += new ComponentRenameEventHandler(changeService_ComponentRename);
            }
        }
    }

    ResumeLayout(true);

    if (btnAutoSynch.Checked == true)
    {
        this.xomlView.Text = GetCurrentXoml();
    }

    return null;
}
Private Function LoadWorkflow(ByVal workflowType As Type) As ICollection
    Dim loader As New WorkflowLoader()
    loader.WorkflowType = workflowType
    Return LoadWorkflow(loader)
End Function

Private Function LoadWorkflow(ByVal loader As WorkflowLoader) As ICollection

    SuspendLayout()

    Dim designSurface As New DesignSurface()
    designSurface.BeginLoad(loader)
    If designSurface.LoadErrors.Count > 0 Then
        Return designSurface.LoadErrors
    End If

    Dim designerHost As IDesignerHost = CType(designSurface.GetService(GetType(IDesignerHost)), IDesignerHost)
    If designerHost IsNot Nothing And designerHost.RootComponent IsNot Nothing Then

        Dim rootDesigner As IRootDesigner = CType(designerHost.GetDesigner(designerHost.RootComponent), IRootDesigner)
        If rootDesigner IsNot Nothing Then
            UnloadWorkflow()

            Me.designSurface = designSurface
            Me.loader = loader
            Me.workflowView = CType(rootDesigner.GetView(ViewTechnology.Default), WorkflowView)
            Me.splitContainer1.Panel1.Controls.Add(Me.workflowView)
            Me.workflowView.Dock = DockStyle.Fill
            Me.workflowView.TabIndex = 1
            Me.workflowView.TabStop = True
            Me.workflowView.HScrollBar.TabStop = False
            Me.workflowView.VScrollBar.TabStop = False
            Me.workflowView.ShadowDepth = 0
            Me.workflowView.EnableFitToScreen = True
            Me.workflowView.Focus()

            Dim selectionService As ISelectionService = CType(GetService(GetType(ISelectionService)), ISelectionService)
            Dim changeService As IComponentChangeService = CType(GetService(GetType(IComponentChangeService)), IComponentChangeService)

            If selectionService IsNot Nothing Then
                AddHandler selectionService.SelectionChanged, AddressOf OnSelectionChanged
            End If

            If changeService IsNot Nothing Then

                AddHandler changeService.ComponentAdded, AddressOf changeService_ComponentAdded
                AddHandler changeService.ComponentChanged, AddressOf changeService_ComponentChanged
                AddHandler changeService.ComponentRemoved, AddressOf changeService_ComponentRemoved
                AddHandler changeService.ComponentRename, AddressOf changeService_ComponentRename
            End If
        End If
    End If

    ResumeLayout(True)

    If btnAutoSynch.Checked = True Then
        Me.xomlView.Text = GetCurrentXoml()
    End If

    Return Nothing
End Function

Applies to