PDMS.NET窗体

概述

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

.NET开发

新建.NET项目

PDMS只接受类库的插件形式。引入Aveva.ApplicationFramework、Aveva.ApplicationFramework.Presentation两个DLL文件。

新建用户控件

在解决方案中,右键添加一个用户控件。用户控件名称为HelloMenuControl并在用户控件上加入一个label控件。
在这里插入图片描述

自定义接口类

接口类需要继承自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。
在这里插入图片描述

新建一个按钮,名为HelloButton。
在这里插入图片描述
为该按钮添加我们自己开发的动态库
在这里插入图片描述
将该按钮拖动到需要的menu下,完成定义。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值