Winform控制項程式設計

2021-06-18 04:02:10 字數 3832 閱讀 5264

winform控制項通常有三種型別:復合控制項(composite controls),擴充套件控制項(extended controls),自定義控制項(custom controls)。  

復合控制項:將現有的各種控制項組合起來,形成乙個新的控制項,將控制項的功能集中起來。

擴充套件控制項:在現有控制項的控制項的基礎上派生出乙個新的控制項,為原有控制項增加新的功能或者修改原有控制項的功能。

自定義控制項:直接從system.windows.forms.control類派生出來。control類提供控制項所需要的所有基本功能,包括鍵盤和滑鼠的事件處理。自定義控制項是最靈活最強大的方法,但是對開發者的要求也比較高,你必須為control類的onpaint事件寫**。

對於文字框的驗證是乙個經常需要用到的功能。你是如何驗證使用者輸入的呢?是在文字框的keydown事件中新增**撲捉按鍵,防止鍵入非法字元(比如只能輸入數字的文字框);還是在文字框失去焦點時,使用**驗證錯誤,然後彈出乙個錯誤訊息框;或者你使用正規表示式對文字框實施驗證。我在使用vb.net時,如果我想使使用者只能錄入數字,喜歡用keydown事件處理使用者按鍵來防止鍵入非數字。但我發現此方法有一定的缺陷,它不能防止你複製、貼上或者使用**改變文字框值的情形。

正規表示式是許多人的選擇,因為它不打擾使用者輸入,提高使用者體驗。但是如果在專案中的每個需驗證的地方你都要新增文字框和errorprovider元件,是否太麻煩了。我們完全可以製作乙個能驗證錯誤的文字框和errorprovider元件的復合控制項。

第一步:新建乙個.net 2.0 的windows窗體控制項庫專案,修改usercontrol1.cs的**,將類繼承的usercontrol改為textbox,修改類名為textboxvalidation。返回設計檢視,從工具箱中拖拽乙個errorprovider元件到設計器中。並修改名稱為txterrorprovider。

第二步:編碼如下:

using system;

using system.collections.generic;

using system.componentmodel;

using system.drawing;

using system.data;

using system.text;

using system.windows.forms;

using system.text.regularexpressions;

namespace textboxerrorprovider

private

string m_errormessage = "

文字框輸入錯誤

"; private

bool m_validationisempty = false;

private

string m_validationisemptystring = "

文字框不能是空的

"; private

string m_regexstring = "";

//////驗證用的表示式,預設是空的,即不驗證。

/// [category("

自定義屬性

"), description("

驗證用的字串表示式,預設是空的,即不驗證。

")] public

string regexstring

set

}///

///錯誤訊息

/// [category("

自定義屬性

"), description("

用於設定使用正規表示式驗證發生錯誤時顯示的訊息

")] public

string errormessage

set

}///

///是否驗證文字框是空值,預設是不驗證。

/// [category("

自定義屬性

"), description("

是否驗證文字框是空值,預設是不驗證。

")] public

bool validationisempty

set

}///

///當驗證文字框是空值時,顯示的錯誤資訊

/// [category("

自定義屬性

"), description("

驗證為空的文字框顯示的錯誤訊息

")] public

string validationisemptystring

set

}///

///驗證文字

/// ///

///public

virtual

void txtvalidation_validating(object sender, canceleventargs e)

else

}else

else

}else}}

//////返回當前文字框控制項的當前錯誤描述字串。

/// ///

public

string geterrormessage()

//2023年9月27日21:47修改:為方便使用者使用鍵盤輸入,增加以下**。

/// /// 當使用者按下enter鍵或者是向下的方向鍵時,將控制項的焦點移走。

/// 使用者按下向上方向鍵時,將控制項的焦點移到上乙個控制項。

///

///

///

private void textboxvalidation_keydown(object sender, keyeventargs e)

break;

}case keys.up: // 使用者按下向上方向鍵時,將控制項的焦點移到上乙個控制項。

break;}}}}}

第三步:編譯

第四步:測試

向解決方案中新增 windows窗體程式專案,在form1上拖拽四個textboxvalidation控制項,四個label控制項,形成如下圖所示:

為textboxvalidation1、textboxvalidation2新增textchanged事件處理程式:

//

密碼private

void textboxvalidation1_textchanged(object sender, eventargs e)

//確認密碼

private

void textboxvalidation2_textchanged(object sender, eventargs e)

設定textboxvalidation1、textboxvalidation2的validationisempty屬性為true。

textboxvalidation3的屬性設定如下圖:

textboxvalidation4的屬性設定如下圖:

執行結果圖:

winform 控制項透明

要實現c winform中的控制項與背景的透明,可以通過設定控制項的backcolor屬性為transparent,同時設定其父控制項。因為在c 中,控制項的透明指對父窗體透明。如果不設定parent屬性,那麼控制項將只對form透明,顯示的時候都會把form的背景色 預設為control 重刷一遍...

Winform控制項簡寫

控制項名稱 縮寫 button按鈕 btncheckbox核取方塊 chkcolumnheader檢視列表頭 colcombobox組合框 cbocontextmenu快捷選單 ctmdatagrid資料網格控制項 dgdatagridview資料網格檢視控制項 dgvdtetimepicker時間...

WinForm分頁控制項

分頁控制項是程式開發的資料載入顯示中較常用,為了能夠靈活重用,以下使用將該功能包裝成使用者控制項usercontrol,整體控制項效果圖如下 分頁paging完整 using system using system.collections.generic using system.component...