概述
本文主要講解了如何将一個用.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開發》
- 拷貝DLL檔案到PDMS目錄
- 修改XML檔案
- 進入PDMS
建立按鈕
在工具欄處右鍵,選擇customize。新增加一個子菜單,并在右側的界面中進行命名,此處我們名為HelloMenu。
建立一個按鈕,名為HelloButton。
為該按鈕添加我們自己開發的動态庫
将該按鈕拖動到需要的menu下,完成定義。