二十5、【開源】EFW框架Winform前端開發之強大的自定義控件庫

回《【開源】EFW框架系列文章索引》       html

EFW框架源代碼下載V1.2:http://pan.baidu.com/s/1hcnuA
web

EFW框架實例源代碼下載:http://pan.baidu.com/s/1o6MAKCa框架

 

      前言:相比之前如今作Net系統Winform版開發有幾款不錯的控件,如DotNetBar、DevExpress,EFW框架也不能落後加入了DotNetBar控件,有時間也想把DevExpress控件也整合進來,這樣讓你們又多一個選擇;DotNetBar中的控件確實已經夠強大了,可是爲了知足客戶更好的操做體驗,本身又在DotNetBar控件的基礎上開發了一套強大的自定義控件;如今用這套控件基本上能夠解決在項目中遇到的各類界面需求;DotNetBar控件的使用這裏就不講了,沒用過的能夠參考官網的Demo,本章重點講解一下本身開發的自定義控件;自定義控件共有9個,包括複雜表格控件、多選文本框、彈出面板、數據表單等控件;ide

本文要點強大的自定義控件:函數

1.網格控件(DataGrid)工具

2.網格內帶下拉網格數據錄入控件(GridBoxCard)測試

3.文本框帶下拉網格控件(TextBoxCard)this

4.多選文本框控件(MultiSelectText)編碼

5.起止時間查詢控件(StatDateTime)spa

6.年齡控件(AgeText)

7.分頁工具欄控件(Pager)

8.分頁工具欄控件(Pager)

9.數據表單控件(frmForm)

 

使用DotNetBar控件開發的主界面:

 

本身開發的強大自定義控件效果圖:

 

源代碼目錄結構:

 

1.網格控件(DataGrid)

  DataGrid繼承與DevComponents.DotNetBar.Controls.DataGridViewX控件,控件每行前面能夠顯示行號,還封裝一些快速設置網格樣式的方法;

1)控件屬性

名稱

類型

說明

默認值

AllowSortWhenClickColumnHeader

bool

獲取或設置是否容許點擊ColumnHeader排序

true

SeqVisible

bool

獲取或設置是否顯示行序號

true

 

2)控件事件


3)控件方法
 

名稱

參數

說明

DrawLines

List<DataGridViewDrawLineInfo> Lines

在指定的位置劃線

AddLine

DataGridViewDrawLineInfo Line

增長一個線條對象

RemoveLine

DataGridViewDrawLineInfo Line

移除一個線條對象

ClearLines

 

清除全部線條

SetRowColor

 

設置行顏色

 

4)使用實例

從拖工具欄拖一個DataGrid控件,給網格內容畫一條分組線與設置行顏色。

List<DataGridViewDrawLineInfo> list=new List<DataGridViewDrawLineInfo>();
            DataGridViewDrawLineInfo lineInfo=new DataGridViewDrawLineInfo();
            lineInfo.StartIndexOfRowColumn=0;
            lineInfo.EndIndexOfRowColumn=1;
            lineInfo.DrawLineOfRowColumnIndex=0;
            lineInfo.DrawDirection=Direction.TopToButtom;
            lineInfo.Width=1;
            lineInfo.Color=Color.Red;
            list.Add(lineInfo);
            //畫分組線
            this.dataGrid1.DrawLines(list);
            this.dataGrid1.SetRowColor(1, Color.Yellow, false);

 

2.網格內帶下拉網格數據錄入控件(GridBoxCard)

GridBoxCard繼承與DataGrid控件,控件指定列綁定下拉網格,這樣方便直接在網格中錄入數據,下拉網格數據源支持分頁;

1) 控件屬性

名稱

類型

說明

默認值

HideSelectionCardWhenCustomInput

bool

當自定輸入的時候是否隱藏選項卡

false

SelectionCards

DataGridViewSelectionCard[]

獲取或設置網格選項卡

null

SelectionNumKeyBoards

DataGridViewSelectionNumericKeyBoard[] 

獲取或設置數字鍵盤選項卡

null

IsShowLetter

bool

是否顯示過濾字母

false

IsShowPage

bool

是否顯示分頁條

false

IsInputNumSelectedCard

bool

是否輸入數字選定

true

       

 

DataGridViewSelectionCard屬性

名稱

類型

說明

默認值

CardColumn

string

選項卡列信息,如:Code|編碼|80,Name|名稱|120

false

DataSource

DataTable

選項數據源

null

CardSize

Size

選項卡大小,設置int width, int height

null

QueryFieldsString

string

設置查詢字段,經過「,」分割

false

SelectCardFilterType

MatchModes

選項卡記錄過濾方式,包括ByAnyString任意字符、ByFirstChar按首字符

false

BindColumnIndex

int

獲取或設置選項卡要綁定到的列的索引

true

IsPage

bool

設置是否內部分頁,IsPage=false時結合PagerEventHandler事件使用

 

PageTotalRecord

int

總記錄數 IsPage=false時才使用

 

Memo

string

選項卡備註說明

 

 

2) 控件事件

名稱

參數

說明

PageNoChanged

PagerGridEventHandler(object sender, int index, int pageNo, int pageSize, string fiterChar)

翻頁的事件,結合DataGridViewSelectionCard屬性的IsPage=false屬性使用

SelectCardRowSelected

OnSelectCardRowSelectedHandle(object SelectedValue, ref bool stop, ref int customNextColumnIndex)

用戶選定選擇卡記錄後觸發

UserAddGirdRow

UserAddGirdRowHandler(DataRow dataRow)

用戶新增一行記錄時觸發

DataGridViewCellPressEnterKey

OnDataGridViewCellPressEnterKeyHandle(object sender, int colIndex, int rowIndex, ref bool jumpStop)

用戶在單元格回車鍵

 

3) 控件方法

名稱

參數

說明

AddRow

 

給Gird新增一行

BindSelectionCardDataSource

int index, DataTable DataSource

綁定選項卡數據源,index指定對應選項卡索引,DataSource數據源

 

4) 使用實例

從拖工具欄拖一個GridBoxCard控件,給網格設置選項卡並綁定數據源。

1.給表格和彈出表格綁定數據源

this.gridBoxCard1.DataSource = dt.Clone();
this.gridBoxCard1.BindSelectionCardDataSource(0, dt.Copy());
this.gridBoxCard1.AddRow();

2.選定記錄是響應的事件

private void gridBoxCard1_SelectCardRowSelected(object SelectedValue, ref bool stop, ref int customNextColumnIndex)
        {
            DataTable dt = (DataTable)this.gridBoxCard1.DataSource;
            int rowindex = gridBoxCard1.CurrentCell.RowIndex;
            dt.Rows[rowindex]["code"] = ((DataRow)SelectedValue)["code"];
            dt.Rows[rowindex]["name"] = ((DataRow)SelectedValue)["name"];
        }

 

3.文本框帶下拉網格控件(TextBoxCard)

TextBoxCard繼承與DevComponents.DotNetBar.Controls.TextBoxX控件,控件綁定下拉網格,且下拉網格數據源支持分頁,普通的下拉控件只有一列數據,而此控件的下拉列能夠自定義多個列;

 

1) 控件屬性

名稱

類型

說明

默認值

ShowCardDataSource

DataTable

下拉網格綁定數據源

true

CardColumn

string

選項卡列信息,如:Code|編碼|80,Name|名稱|120

true

matchMode

MatchModes

選項卡記錄過濾方式,包括ByAnyString任意字符、ByFirstChar按首字符

 

QueryFieldsString

string

設置查詢字段,經過「,」分割

 

DisplayField

string

顯示字段

 

MemberField

string

值字段

 

SelectedValue

object

獲取或設置選中的值

 

ShowCardWidth

int

設置下拉框的寬度

0

ShowCardHeight

int

設置下拉框的高度

0

IsShowLetter

bool

是否顯示過濾字母

false

IsShowPage

bool

是否顯示分頁條

false

IsPage

bool

設置是否內部分頁,IsPage=false時結合PagerEventHandler事件使用

true

IsShowSeq

bool

是否顯示下拉行序號

true

IsNumSelected

bool

是否輸入數字選定

true

IsEnterShowCard

bool

是否焦點進入就顯示內容

false

 

2) 控件事件

名稱

參數

說明

AfterSelectedRow

 

在選項卡選定記錄後引起的事件

PageNoChanged

 

翻頁的事件,結合IsPage=false屬性使用

 

3) 控件方法

名稱

參數

說明

HideCard

 

隱藏下拉網格

 

4) 使用實例

從拖工具欄拖一個TextBoxCard控件,並綁定數據源。

this.textBoxCard1.ShowCardDataSource = dt.Copy();

 

4.多選文本框控件(MultiSelectText)

MultiselectText是一個用戶控件,依賴Popup控件和DataGrid控件,控件支持兩種多選模式,一是CheckBox複選,二是Grid查找勾選;數據源很少的狀況下建議CheckBox模式;

1) 控件屬性

名稱

類型

說明

默認值

SelectText

string

獲取多選文本

 

SelectValue

Object[]

獲取或設置多選的值

 

DataSource

object

多選下拉數據源

 

displayField

string

顯示字段

 

valueField

string

值字段

 

multiSelectTextType

MultiSelectTextType

多選類型,CheckBox和Grid

 

selectWidth

int

多選面板的寬度

 

selectHeight

int

多選面板的高度

 

selectColumnCount

int

若是是CheckBox模式,設置顯示幾列

 

CardColumn

string

列信息,如:Code|編碼|80,Name|名稱|120

 

QueryFieldsString

string

設置查詢字段,經過「,」分割

 
       

 

2) 控件事件

名稱

參數

說明

SelectValueChanged

 

選中值改變觸發此事件

     

 

3) 控件方法

名稱

參數

說明

AddValue

object val

代碼增長值

ClearValue

 

清除全部值

 

4) 使用實例

從拖工具欄拖一個MultiSelectText控件,並綁定數據源。

 this.multiSelectText2.DataSource = dt.Copy();

 

5.起止時間查詢控件(StatDateTime)

StatDateTime是一個用戶控件依賴於Popup控件,控件包含了多種選項,快速錄入起止時間;

 

1) 控件屬性

名稱

類型

說明

默認值

AgeBirthday

DateTime

獲取或設置出生日期

 

AgeString

string

獲取或設置年齡

 

 

2) 控件事件

 

3) 控件方法

 

4) 使用實例

從拖工具欄拖一個StatDateTime控件。

 

6.年齡控件(AgeText)

AgeText是一個用戶控件依賴於Popup控件,控件會自動在出生日期與年齡相互轉換;

 

1) 控件屬性

名稱

類型

說明

默認值

AllowSortWhenClickColumnHeader

bool

獲取或設置是否容許點擊ColumnHeader排序

true

SeqVisible

bool

獲取或設置是否顯示行序號

true

 

2) 控件事件


3) 控件方法
 

名稱

參數

說明

DrawLines

List<DataGridViewDrawLineInfo> Lines

在指定的位置劃線

 

4) 使用實例

從拖工具欄拖一個AgeText控件。

 

7.分頁工具欄控件(Pager)

Pager分頁控件,能夠與DataGrid控件一塊兒使用;

 

1) 控件屬性

名稱

類型

說明

默認值

BindDataControl

DataGridView

綁定數據控件

null

DataSource

DataTable

綁定數據源

null

IsPage

bool

設置是否內部分頁,IsPage=false時結合PagerEventHandler事件使用

true

pageSize

int

每頁顯示條數

10

pageNo

int

當前第幾頁

1

totalRecord

int

共記錄數

0

       

 

2) 控件事件

名稱

參數

說明

PageNoChanged

PagerEventHandler

翻頁的事件,結合IsPage=false屬性使用

     

 

3) 控件方法

 

4) 使用實例

從拖工具欄拖一個Pager控件。

 

8.彈出面板控件(Popup)

Popup彈出面板控件,在Winform開發中過多增長彈出窗會影響操做體驗,使用此控件來設計界面會讓界面更簡潔明瞭;除了點擊標題上的紅叉能夠隱藏彈窗,點擊界面的任何位置也會隱藏彈窗;

 

1) 控件屬性

 

2) 控件事件

名稱

參數

說明

doShow

 

彈出面板顯示時觸發此事件

doHide

 

彈出面板隱藏時觸發此事件

 

3) 控件方法

名稱

參數

說明

AddPopupPanel

 

綁定彈出面板Panel控件

AddPopupWindow

 

綁定彈出面板Winform界面

Show

 

以面板形式顯示

ShowWindow

 

以窗體形式顯示

 

4) 使用實例

從拖工具欄拖一個Popup控件,綁定彈出的面板控件。

 popup1.ShowWindow(this, new Form2(), 200, 180, GreatHIS.Controls.CommonControl.WindowStyle.Task,"【測試】");

 popup1.AddPopupPanel(button1, new Form1(), PopupEvent.Click, button1.Width, 120);

  

 

9.數據表單控件(frmForm)

frmForm數據表單控件,讓你獲取界面上控件的值或賦值個控件像web網頁中的form同樣簡單,支持回車焦點按順序跳轉,支持驗證綁定控件錄入值有效性;

 

1) 控件屬性

名稱

類型

說明

默認值

IsSkip

bool

設置是否焦點按順序跳轉

true

 

2) 控件事件

 

3) 控件方法

名稱

參數

說明

AddItem

 

添加界面控件

Load

 

將數據導入到綁定控件顯示

GetValue

 

獲取綁定控件的值集合

Clear

 

清空綁定控件的值

SetEnabled

 

設置綁定控件是否可操做

Validate

 

驗證綁定控制的值有效性,如Text不能爲空,身份證號碼驗證等

 

4) 使用實例

從拖工具欄拖一個frmForm控件,並綁定界面上的輸入控件。

第一步:在窗體構造函數綁定控件

this.frmForm1.AddItem(txtUser, null, "請輸入用戶名!");
this.frmForm1.AddItem(txtPassWord, null, "請輸入密碼!");

 

第二步:操做frmForm控件進行裏面綁定控件的數據驗證、取值、賦值

if (this.frmForm1.Validate())
{
InvokeController("UserLogin");
isReLogin=true;
this.Close();
}
相關文章
相關標籤/搜索