天天看點

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下,完成定義。

繼續閱讀