回《【開源】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控件開發的主界面:
本身開發的強大自定義控件效果圖:
源代碼目錄結構:
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);
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"]; }
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();
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();
StatDateTime是一個用戶控件依賴於Popup控件,控件包含了多種選項,快速錄入起止時間;
1) 控件屬性
名稱 |
類型 |
說明 |
默認值 |
AgeBirthday |
DateTime |
獲取或設置出生日期 |
|
AgeString |
string |
獲取或設置年齡 |
2) 控件事件
3) 控件方法
4) 使用實例
從拖工具欄拖一個StatDateTime控件。
AgeText是一個用戶控件依賴於Popup控件,控件會自動在出生日期與年齡相互轉換;
1) 控件屬性
名稱 |
類型 |
說明 |
默認值 |
AllowSortWhenClickColumnHeader |
bool |
獲取或設置是否容許點擊ColumnHeader排序 |
true |
SeqVisible |
bool |
獲取或設置是否顯示行序號 |
true |
2) 控件事件
3) 控件方法
名稱 |
參數 |
說明 |
DrawLines |
List<DataGridViewDrawLineInfo> Lines |
在指定的位置劃線 |
4) 使用實例
從拖工具欄拖一個AgeText控件。
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控件。
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);
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(); }