
using System; using System.Collections.Generic; using System.Text; using System.ComponentModel.Design; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Workflow.Activities; using System.Workflow.ComponentModel.Design; using System.Workflow.ComponentModel; namespace WindowsApplication3 { public partial class Form1 : Form { private WorkflowView wlv; private WorkflowViewWrapper workflowViewWrapper; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //这样是错误的 // wlv = new WorkflowView(); // this.panel1.Controls.Add(wlv); //这个是正确的 this.workflowViewWrapper=new WorkflowViewWrapper(this); this.panel1.Controls.Add(this.workflowViewWrapper.workflowView); this.workflowViewWrapper.LoadDefaulttWorkflow(); } } public class WorkflowViewWrapper { private DesignSurface surface; public WorkflowView workflowView; private IDesignerHost host; private SequentialWorkflowActivity sequentialWorkflow; public WorkflowViewWrapper(Form parent) { //Create a Workflow Design Surface //创建设计时的环境以显示WorkflowView this.surface = new DesignSurface(); //Get the Workflow Designer Host //获得管理设计器的接口对象 this.host=this.surface.GetService(typeof(IDesignerHost)) as IDesignerHost; if(this.host==null) return; //Create a Sequential Workflow by using the Workflow Designer Host sequentialWorkflow=(SequentialWorkflowActivity)host.CreateComponent(typeof(SequentialWorkflowActivity)); //sequentialWorkflow.ID="SequentialWorkflow1"; //Create a Workflow view on the workflow Design surface //指定的Surface显示WorkflowView this.workflowView=new WorkflowView(this.surface as IServiceProvider); this.workflowView.Dock=DockStyle.Fill; //Activate the Workflow view this.host.Activate(); } public void LoadDefaulttWorkflow() { //Create a code activity CodeActivity CodeActivity1= new CodeActivity(); sequentialWorkflow.Activities.Add(CodeActivity1); host.RootComponent.Site.Container.Add(CodeActivity1); } } } 转自:http://blog.csdn.net/eroschina/ |