日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库

發布時間:2023/12/19 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

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

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

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

1.網格控件(DataGrid)

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

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

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

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

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

DataGridViewDrawLineInfoLine

增加一個線條對象

RemoveLine

DataGridViewDrawLineInfoLine

移除一個線條對象

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

選項卡大小,設置intwidth,intheight

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(objectsender,intindex,intpageNo,intpageSize,stringfiterChar)

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

SelectCardRowSelected

OnSelectCardRowSelectedHandle(objectSelectedValue,refboolstop,refintcustomNextColumnIndex)

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

UserAddGirdRow

UserAddGirdRowHandler(DataRowdataRow)

用戶新增一行記錄時觸發

DataGridViewCellPressEnterKey

OnDataGridViewCellPressEnterKeyHandle(objectsender,intcolIndex,introwIndex,refbooljumpStop)

用戶在單元格回車鍵

3)控件方法

名稱

參數

說明

AddRow

給Gird新增一行

BindSelectionCardDataSource

intindex,DataTableDataSource

綁定選項卡數據源,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

objectval

代碼增加值

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();
}

總結

以上是生活随笔為你收集整理的二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。