工作流学习笔记-ifElse活动;从工作流中取出返回值;计算器实例
2010-02-28 14:00
447 查看
新建一个项目->顺序工作流库
设计面板拖放ifElse活动
点右键,添加三个分支
每个分支的条件设置为声明性规则条件
并设置他们的名称和表达式
代码如下:
在解决方案中创建windows form项目
设计一个简单的计算器的界面
做代码如下
设计面板拖放ifElse活动
点右键,添加三个分支
每个分支的条件设置为声明性规则条件
并设置他们的名称和表达式
代码如下:
using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Collections; using System.Drawing; using System.Linq; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Serialization; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Workflow.Runtime; using System.Workflow.Activities; using System.Workflow.Activities.Rules; namespace WorkflowLibrary1 { public sealed partial class Workflow1: SequentialWorkflowActivity { public string Operation { get; set; } public int Number1 { get; set; } public int Number2 { get; set; } public double Result { get; set; } public Workflow1() { InitializeComponent(); } private void codeActivity1_ExecuteCode(object sender, EventArgs e) { Result = Number1 + Number2; } private void codeActivity2_ExecuteCode(object sender, EventArgs e) { Result = Number1 - Number2; } private void codeActivity3_ExecuteCode(object sender, EventArgs e) { Result = Number1 * Number2; } private void codeActivity4_ExecuteCode(object sender, EventArgs e) { if (Number2 != 0) { Result = (double)Number1 / (double)Number2; } else { throw new ArgumentException("除数为0"); } } private void codeActivity5_ExecuteCode(object sender, EventArgs e) { throw new ArgumentException("没有找到合适的运算符:{0}", this.Operation); } } }
在解决方案中创建windows form项目
设计一个简单的计算器的界面
做代码如下
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Workflow.Runtime; using System.Threading; using WorkflowLibrary1; namespace test { public partial class Form1 : Form { private WorkflowRuntime _wfRuntime; private AutoResetEvent _waitHandle = new AutoResetEvent(false);//已发生事件 private string _result; public Form1() { InitializeComponent(); initWFRuntime();//一个appdomain只能初始化一次 } /// <summary> /// 工作流初始化 /// </summary> private void initWFRuntime() { _wfRuntime = new WorkflowRuntime(); _wfRuntime.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs>(_wfRuntime_WorkflowCompleted); _wfRuntime.WorkflowTerminated += new EventHandler<WorkflowTerminatedEventArgs>(_wfRuntime_WorkflowTerminated); } void _wfRuntime_WorkflowTerminated(object sender, WorkflowTerminatedEventArgs e) { MessageBox.Show(e.Exception.Message); _waitHandle.Set();//发生事件已终止 } void _wfRuntime_WorkflowCompleted(object sender, WorkflowCompletedEventArgs e) { _result = e.OutputParameters["Result"].ToString(); _waitHandle.Set(); } private void getResult() { Dictionary<string, object> dic = new Dictionary<string, object>(); dic.Add("Operation", textBox2.Text.Trim()); dic.Add("Number2", int.Parse(textBox3.Text.Trim())); dic.Add("Number1", int.Parse(textBox1.Text.Trim())); WorkflowInstance wfInstance = _wfRuntime.CreateWorkflow(typeof(WorkflowLibrary1.Workflow1), dic); wfInstance.Start(); _waitHandle.WaitOne(); } /// <summary> /// 注册按钮事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_Load(object sender, EventArgs e) { foreach (var ctl in this.Controls) { if (ctl is Button) { ((Button)ctl).Click += new EventHandler(Form1_Click); } } } /// <summary> /// 按钮事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void Form1_Click(object sender, EventArgs e) { Button btn = (Button)sender; TextBox tb; if (string.IsNullOrEmpty(textBox1.Text.Trim())) { tb = textBox1; } else if (string.IsNullOrEmpty(textBox3.Text.Trim())) { tb = textBox3; } else { tb = textBox1; } switch (btn.Text) { case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "0": tb.Text = btn.Text; break; case "+": case "-": case "*": case "/": textBox2.Text = btn.Text; break; case "=": getResult(); textBox4.Text = _result; break; default: break; } } } }
相关文章推荐
- 使用if-else实现简单的登录注销(学习笔记)
- 学习WF笔记9- 自定义工作流活动(1)
- if else 嵌套学习笔记
- Python学习笔记(4)——控制流If-else
- Groovy笔记-Grails g标签之<g:message>,<g:if>,<g:else>,<g:select>实例一枚
- JavaScript基础学习笔记(三)——JavaScript 比较和逻辑运算符、JavaScript If...Else 语句、JavaScript Switch 语句
- PHP学习笔记——php实例简单的计算器(一)
- PHP学习笔记——php实例简单的计算器(二)
- Linxu Shell 学习笔记(八)-- if else 与 case esac语句
- VS2010 学习笔记 WF4 (7) 学习If/Else逻辑节点,根据输入参数的长度来返回不同的问候语
- 跟我一起学Windows Workflow Foundation(3)-----使用If/Else活动,定制活动处理工作流,使用事件传递数据
- Keras深度学习框架学习笔记(3) - AttributeError:’module’ object has no attribute ‘ifelse’错误信息的解决方法
- [汇编学习笔记]if/else,while,for,switch in Assembly Language
- 工作流学习笔记——Activiti流程实例、任务管理四步曲
- JavaScript学习笔记15-if-else语句
- 跟我一起学Windows Workflow Foundation(3)-----使用If/Else活动,定制活动处理工作流,使用事件传递数据
- if else switch 学生成绩 学习笔记
- [原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等
- Objective-C学习笔记(七)——if-else条件判断语句
- if else学习笔记