小Q的博客

  • 首页
  • net编程
    • 产品和框架
    • 开发实例
    • 经验技巧
    • 开源组件
  • wp独立站
  • 自媒体
  • 日记本
  • 工具箱
每个程序员,都应该有一个自己的博客站
  1. 首页
  2. net编程
  3. 开源组件
  4. 正文

devexpress控件教程 开发workflow设计器这么简单

2023年1月12日 571点热度 0人点赞 0条评论

如果你的项目的OA,尤其是政府部门的OA,那么一定会涉及工作流这个功能。这个模块说大不大、说小不大,最头疼的就是它的设计器,一直没有合适的。虽然微软出了工作流的3.5和4.0版本,但也没有配套的设计器,只能自己开发。

工作流设计器

 

今天我们使用DevExpress的控件,来实现工作流模板设计器。新建Form页面,继承DevExpress.XtraDiagram.Designer.DiagramDesignerForm类即可。80%的功能都有了,包括顶部菜单、左侧导航按钮和设计区。

public partial class FormDevDiagramDemo : DiagramDesignerForm

 

下面我们实现这个功能就可以了,单击按钮,往设计区里插入一个图形,同时标记出这个图形的识别码。

protected void AddSingleShape()
{
    //这里可以扩展,比如弹出个页面,记录这个结点属性信息,如:名称、委托人等
    string content = "结点的content1";
    DiagramShape single = new DiagramShape(BasicShapes.Rectangle, 20, 20, 200, 100, content);
    single.Tag = content;

    Diagram.Items.Add(single);
    Diagram.SelectItem(single);
}

 

再绑定控件的SelectionChanged事件,选中结点时,弹出这个结点的相关信息

private void diagram_SelectionChanged(object sender, DiagramSelectionChangedEventArgs e)
{
    DiagramItem selItem = this.Diagram.PrimarySelection;
    if (selItem == null)
        return;

    FormUIHelper.ShowMessage(selItem.Tag.ToString());
}

 

完整页面源码

public partial class FormDevDiagramDemo : DiagramDesignerForm
  {
      public FormDevDiagramDemo()
      {
          InitializeComponent();
      }

      protected override void OnLoad(EventArgs e)
      {
          base.OnLoad(e);
          InitializeForm();
      }

      protected void InitializeForm()
      {
          WindowState = FormWindowState.Maximized;
          AddSingleShape();

          //this.Diagram.AddingNewItem += diagram_AddingNewItem;
          this.Diagram.SelectionChanged += diagram_SelectionChanged;
      }

      protected void AddSingleShape()
      {
          //这里可以扩展,比如弹出个页面,记录这个结点属性信息,如:名称、委托人等
          string content = "结点的content1";
          DiagramShape single = new DiagramShape(BasicShapes.Rectangle, 20, 20, 200, 100, content);
          single.Tag = content;

          Diagram.Items.Add(single);
          Diagram.SelectItem(single);
      }

      //private void diagram_AddingNewItem(object sender, DiagramAddingNewItemEventArgs e)
      //{
      //    string tag = FormUIHelper.Prompt("结点Tag值", "请输入入结点Tag值");
      //    if (string.IsNullOrEmpty(tag))
      //        return;

      //    e.Item.Tag = tag;
      //}

      private void diagram_SelectionChanged(object sender, DiagramSelectionChangedEventArgs e)
      {
          DiagramItem selItem = this.Diagram.PrimarySelection;
          if (selItem == null)
              return;

          FormUIHelper.ShowMessage(selItem.Tag.ToString());
      }
  }

 

相关阅读

dvexpress控件教程 细数冷门但好用的控件,第1期

devexpress控件的2种汉化方法,官方想得很周到

标签: devexpress控件 devexpress教程 DiagramControl workflow 工作流 设计器
最后更新:2023年1月12日

小Q

80后中年不油腻大叔,喜欢编写代码、打羽毛球、做木制玩具。目前定居浙江杭州

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2022 小Q的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备2022019157号-2