⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 designerabstractnewactivitytool.cs

📁 这个是自己制作的工作流设计器,可以可视化的拖拉
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace WorkflowDesigner.Designer
{
    /// <summary>
    /// 节点设计工具基类
    /// </summary>
    public abstract class DesignerAbstractNewActivityTool:DesignerTool
    {
        #region 字段



        #endregion

        #region 属性


        #endregion

        #region 构造函数

        #endregion

        #region 操作

        #region 私有
        #endregion

        #region 保护
        /// <summary>
        /// 创建一个节点(可视化对象)
        /// </summary>
        /// <param name="x">鼠标所在位置的x轴坐标</param>
        /// <param name="y">鼠标所在位置的y轴坐标</param>
        /// <returns>返回创建的节点</returns>
        protected abstract WfAbstractActivity CreateActivity(int x, int y);

        /// <summary>
        /// 得到本节点的名称
        /// </summary>
        /// <returns>返回本节点的名称</returns>
        protected virtual String GetActivityNamePrefix()
        {
            return "活动";
        }

       /// <summary>
       /// 生成新的节点名称(如果相同的节点,自动累加并将累加值加在节点名称后)
       /// </summary>
       /// <returns>返回新节点的名称</returns>
        protected virtual String GenerateNewActivityName()
        {
            //存放判断名字是否存在
            bool nameExist;
            //存放新名字
            String newName;
            int i = 1;
            do
            {
                newName = GetActivityNamePrefix() + i.ToString();
                //如果有相同名字的节点
                if (Ctrl.Document.GetActivityByName(newName) == null)
                {
                    nameExist = false;
                }
                else
                {
                    nameExist = true;
                }
                i++;
            } while (nameExist);
            return newName;
        }
        #endregion

        #region 公用

        /// <summary>
        /// 当鼠标按下时
        /// </summary>
        /// <param name="x">鼠标点所在的位置x轴坐标</param>
        /// <param name="y">鼠标点所在的位置y轴坐标</param>
        public override void OnMouseDown(int x, int y)
        {
            //创建一个节点(可视化对象)
            WfAbstractActivity abstractActivity = CreateActivity(x, y);
            //设置节点所属工作文档
            abstractActivity.Flow = Ctrl.Document;
            //对齐节点位置
            abstractActivity.AlignToGrid();
            //设置节点的名称
            abstractActivity.Name = GenerateNewActivityName();
            //把该节点增加到可视化队列中去
            Ctrl.Document.VisualObjectList.Add(abstractActivity);
            //触发增加可视化对象的事件
            Ctrl.FireVisualObjectAddEvent(abstractActivity);
            //重新绘制
            Ctrl.RedrawAll();
            //如果没有按下ctrl键
            if (!IsControlPressed())
            {
                //将“指针控件”设置为当前控件
                Ctrl.CurrentTool = new DesignerSelector();
            }
        }

        #endregion
        #endregion

        

        

       

        
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -