全部 脚本手册 入门教程 实例教程

脚本手册

执行C#语句..


访问 2501

一. 创建方法

在流程设计器中点右键,弹出右键菜单选择“自定义代码”- “执行C#语句”。


. 功能介绍

该功能的作用是执行文本框里的C#代码,由于执行C#语句功能经过了几次升级,在书写时有点细微的差别。


  1. VG版本低于7.8时,在文本框里直接输入C#代码就可以执行,如

image.png

  1. VG升级到7.8时,引入了默认方法Run,该方法及参数名不可用修改,C#代码必须放在Run方法里才可以执行,如

image.png

引入Run方法的好处是在Run方法外可以写其他方法,在Run内可以直接调用其外部的方法,例如

public void Run(Dictionary<string, string> stringDic, Dictionary<string, List<string>> listDic, Dictionary<string, int> intDic, Dictionary<string, Dictionary<string, string>> rowDic)
{
    msg("弹出一个提示框");
}
private void msg(string str)
{
	MessageBox.Show(str);
}


  1. VG升级到8.2.1.0时出现了一个新类型的变量——表格变量,在C#里可以操作表格变量,所以Run方法里也新增了一个表格变量类型的参数tableDic,如

   image.png

public void Run(Dictionary<string, string> stringDic, Dictionary<string, List<string>> listDic, Dictionary<string, int> intDic, Dictionary<string, Dictionary<string, string>> rowDic, Dictionary<string, DataTable> tableDic)
{
    msg("弹出一个提示框");
}
private void msg(string str)
{
	MessageBox.Show(str);
}

所以,在使用不同版本的VG时,特别要注意以上差别。


. 示例

  1. VG变量操作

public void Run(Dictionary<string, string> stringDic, Dictionary<string, List<string>> listDic, Dictionary<string, int> intDic, Dictionary<string, Dictionary<string, string>> rowDic, Dictionary<string, DataTable> tableDic)
{
    //范例1:将集合变量中的每个成员值用逗号作为分隔符拼接成一个字符串,保存到一个文本变量中
    //运行前先手动创建文本变量“我是文本变量”和集合变量“我是集合变量”
    stringDic["我是文本变量"] = string.Join(",", listDic["我是集合变量"].ToArray());

    //范例2:计数器变量转换为文本型变量
    //stringDic["文本"] = Convert.ToString(intDic["计数器"]);

    //范例3:获取一随机数
    //Random ran = new Random();
    //intDic["随机数字"] = ran.Next(1,8);
}
  1. 剪切板操作

public void Run(Dictionary<string, string> stringDic, Dictionary<string, List<string>> listDic, Dictionary<string, int> intDic, Dictionary<string, Dictionary<string, string>> rowDic, Dictionary<string, DataTable> tableDic)
{
    //剪贴板操作时要在主线程上执行才有效,代码如下
    Application.OpenForms[0].Invoke((EventHandler)delegate
    {
      Clipboard.SetText("aaaaaaaaaaaaaa");//写入剪贴板
      var strContent = Clipboard.GetText();//读取剪贴板
      MessageBox.Show(strContent.ToString());
    });
}