解析大型.NET ERP系統 靈活複雜的界面控件Infragistics WinForms

Infragistics 是.NET平臺優秀的控件供應商,囊括了WinForms,ASP.NET,Silverlight,WPF,Windows Phone等全部關於微軟.NET技術的界面控件。藉助於這些功能複雜的控件,爲ERP的界面提供了靈活的操做能力。html

本篇不談控件開發,只詳細說明ERP系統如何使用Infragistics WinForms,而不用.NET 自帶的控件。數據庫

1  文本編輯控件提示必須輸入值

若是一個文本編輯控件必須輸入值,有許多實現方法能夠借鑑。看金蝶ERP的實現,在文本標籤控件位置處用星號標識。ide

image

若是用Infragistics WinForms的TextEditor,可實現以下的效果:佈局

image

對於必須輸入值的文本編輯控件,控件末尾有一個星號圖片標識。若是這個編輯控件有值,則圖標消失。ui

image

只須要一行代碼,Infragistics WinForms可實現這個效果。spa

txtCustomerNo.Appearance.Image = Properties.Resources.Required_Field_16;


2  控件的數據查找窗體

繼續比較金蝶界面,仍是用上面的那張模擬BOM的圖片,工藝路線和計量單位文本編輯控件後面有一個小圖標,表示點這個圖標,可彈出一個數據查找窗體,這樣方便用戶錄入數據。設計

ERP系統也有相似的實現,先看界面效果圖,注意左邊第一個控件Ccy貨幣輸入控件,它後面有一個小按鈕。3d

image

當鼠標離開時,Ccy控件後面的小按鈕自動消失。爲了實現這個特性,也只須要一行代碼:code

EditorButton button = new EditorButton("lookup");
button.Text = "...";
txtCcy.ButtonsRight.Add(button);

 

3  控件支持鑽取

鑽取這個詞的含義來源於報表中,主表點擊事件鑽取到子代表細記錄。ERP中也吸收了這個思想,能夠給控件設定要鑽取的功能。好比上圖中的貨幣Ccy,銷售員Salesman,點擊文本編輯控件中值,可打開相應的主檔功能,查看詳細信息。orm

4  Grid控件支持過濾,排序,分組,字段選取,查找,列順序重排列,導出Excel

以圖爲例子,參考銷售訂單明細中的網格控件。

image

Code Project中有幾篇文章,是專門講解經過重寫微軟的DataGridView控件,如何具有以上列出的特性。
Infragistics WinForms已經內置了以上特性,並且支持屬性序列化。好比上圖中列的順序是Line No,Item No

我能夠將Item No拖動到Line No列的前面,在窗體關閉時,保存這個順序,下次打開窗體時讀取字段順序值,恢復成用戶設定的順序。可以保存用戶偏號(Profile)是系統友好的一個主要方面。

5 日期時間控件DateTimePicker 支持空值

.NET WinForms自帶的日期時間控件不支持空日期時間值,這裏的空值不是指類型DataTime?。當打開用戶界面建立新的單據時,若是日期控件沒有任何設定值動件,日期控件將返回空時間值,也就是保持NULL值。

6 按鈕Button控件支持圖片

參考下面的報表打印按鈕,它能夠顯示一個打印的小圖標。Delphi不少年前就具有這個特性。

image

7 控件支持屬性序列化

窗體中對控件的佈局Layout的修改,能夠保存到數據庫或存儲介質中,當再次加載控件時,能夠恢復成上次用戶修改的佈局樣式(Layout)。這個特性,在Grid,TreeView控件有很重要的做用。

在窗體關閉前,讀取控件的屬性,保存到數據庫中,讀取屬性值:

values.Add(new ComponentPropertyValue("AllowRowSummaries", true));

界面加載時,根據數據庫中的記錄設置控件屬性:

if (values.ContainsKey("AllowRowSummaries") && Convert.ToBoolean(values["AllowRowSummaries"].Value))
{
      current.AllowRowSummaries = AllowRowSummaries.True;
}

把上面兩段代碼,分別放到窗體加載和關閉事件中,可參考下面的程序代碼,實際保存用戶偏號。

protected override void OnLoad(EventArgs e)
{
    LoadFormProfile();
}

protected override void OnClosed(EventArgs e)
{
    SaveFormProfile();
}


8  控件增長上下文菜單

文本編輯類控件,內置標準的剪切複製粘貼功能,還應該增長這三個編輯功能的上下文菜單。

image

日期時間控件,也支持剪切複製粘貼功能。

image

 

9 控件的Tab Index順序要預先設置好,Enter鍵能夠當Tab鍵使用

ERP界面大部分控件是單行文本輸入,能夠考慮給編輯控件重寫鍵盤事件,按Enter鍵可切換到下一個Tab Index控件。

protected override void OnKeyDown(KeyEventArgs e)
{
      if (!base.DesignMode)
       {
              if ((!e.Alt && !e.Control) && !e.Shift)
              {
                    if (e.KeyCode == Keys.Enter)
                    {
                            SendKeys.Send("{TAB}");
                            e.Handled = true;
                     }
 

這個特性在Grid控件中很是有用,回車後直接跳到下一個單元格(Cell),最後一個單元格後再按回車鍵,可跳到下一行。

10  可摺疊式組合框 Expandable Groupbox

上面的截圖中用Groupbox將特性相近的控件包括起來,這是界面設計中很友好的一種表達方式。若是窗體的空間位置不夠,或是控件的值僅僅用於參考,能夠考慮用UltraExpandableGroupBox,它的模樣參考下面的界面例子。

image

UltraExpandableGroupBox左上角有一個可摺疊或展表的符號,可節省屏幕空間。

11 Grid控件支持打印預覽和打印

Grid控件內置了打印功能,參考下圖,在數據查詢類功能中有很重要的做用。

image

Infragistics控件的設計人員設計這個打印功能,考慮了環保方面的要求(節省紙張和墨水)。

相關文章
相關標籤/搜索