天天看点

PDMS.NET窗体概述.NET开发PDMS部署

概述

本文主要讲解了如何将一个用.NET开发的窗体,部署到PDMS中。在阅读本文之前,建议先阅读《PDMS .NET开发》作为前置课程。

.NET开发

新建.NET项目

PDMS只接受类库的插件形式。引入

Aveva.ApplicationFramework、Aveva.ApplicationFramework.Presentation

两个DLL文件。

新建用户控件

在解决方案中,右键添加一个用户控件。用户控件名称为

HelloMenuControl

并在用户控件上加入一个label控件。

PDMS.NET窗体概述.NET开发PDMS部署

自定义接口类

接口类需要继承自

IAddin

接口,并重写方法。

namespace MyAddin
{
    public class MyAddin : IAddin
    {
     	// 设置插件的名称
        public string Name {
            get { return "hello"; }
        }
		
		// 设置插件的描述
        public string Description {
            get { return "hello"; }

        }
		
		// 重写Starta方法
        public void Start(ServiceManager serviceManager)
        {
            // 获取WINDOWS服务
            WindowManager windowManager = (WindowManager)serviceManager.GetService(typeof(WindowManager));

            // 实例化窗体对象,并定义其属性
            HelloMenuControl MyControl = new HelloMenuControl();
            // CreateDockedWindow的参数1和command的Key保持一致,参数2和Title保持一致
            DockedWindow window = windowManager.CreateDockedWindow("My.Hello", "hello", MyControl, DockedPosition.Right);
            window.SaveLayout = true;

            // 获取Command服务
            CommandManager commandManager = (CommandManager)serviceManager.GetService(typeof(CommandManager));

            // 添加自定义的Command到服务中
            MyCommand command = new MyCommand(window);
            commandManager.Commands.Add(command);
        }

        public void Stop()
        {
            throw new NotImplementedException();
        }
    }
}
           

自定义Command类

namespace MyAddin
{
    public class MyCommand : Command
    {
        // 创建窗口的私有变量
        private Aveva.ApplicationFramework.Presentation.DockedWindow _window;

        // 带参实例化类
        public MyCommand(DockedWindow window)
        {
            // 定义command的Key,这个key是要在PDMS中显示的,命名规则应该为公司名+功能名
            this.Key = "My.Hello";
            // Save the docked window
            _window = window;
            // 创建窗体关闭的事件委托
            _window.Closed += new EventHandler(_window_Closed);
            // 创建窗体加载事件的委托
            WindowManager.Instance.WindowLayoutLoaded += new EventHandler(Instance_WindowLayoutLoaded);

        }

        // 设置默认窗体不打开
        void Instance_WindowLayoutLoaded(object sender, EventArgs e)
        {
            _window.Visible = false;

            // Update the command state to match initial window visibility
            this.Checked = _window.Visible;
        }

        void _window_Closed(object sender, EventArgs e)
        {
            // Update the command state when the window is closed
            this.Checked = false;
        }

        // 重构执行方法
        public override void Execute()
        {
            //打开窗体
            _window.Title = "hello";
            _window.Show();
        }
    }
}
           

PDMS部署

以下步骤详细说明,请参考前文《PDMS .NET开发》

  1. 拷贝DLL文件到PDMS目录
  2. 修改XML文件
  3. 进入PDMS

新建按钮

在工具栏处右键,选择customize。新增加一个子菜单,并在右侧的界面中进行命名,此处我们名为HelloMenu。

PDMS.NET窗体概述.NET开发PDMS部署

新建一个按钮,名为HelloButton。

PDMS.NET窗体概述.NET开发PDMS部署

为该按钮添加我们自己开发的动态库

PDMS.NET窗体概述.NET开发PDMS部署

将该按钮拖动到需要的menu下,完成定义。

继续阅读