在設計表單時,屬性acceptbutton和keypreview對於自動響應使用者操作(如按enter-key, esc-key等)非常有用。當您建立自己的使用者控制項時,這些屬性不可用。至少,現在還不是時候。
使用windows內建的訊息傳遞系統可以幫助我們解決這個問題。
我們必須實現的一點是,當使用者按下我們想要作出反應的鍵時,我們要得到通知。比如說,你設計了乙個搜尋對話方塊使用者控制項,就像windows資源管理器中的檔案搜尋一樣。當使用者按下enter-key時,搜尋應該開始。為了確定按下的鍵,可以為每個子控制項使用_keyup-event,這使得**看起來很糟糕,而且不是乾淨的程式設計風格。這就是我們的使用者控制項鍵預覽功能的作用。要在使用者控制項級別上實現鍵驗證,我們使用. net框架的usercontrol基類實現的函式processkeypreview。要獲得對它的控制,只需在類級別上宣告對它的重寫。
隱藏,複製**
public使用這種技術,您可以向使用者控制項的使用者提供表單類樣式的功能。您甚至可以實現乙個名為acceptbutton或cancelbutton的屬性來實現更大的靈活性。class myusercontrol
public
event onenterkey(byval sender as system.object, byval e as system.eventargs)
public
event onf4(byval controlname as
string)
private
const wm_keydown = &h100
protected
overrides
function processkeypreview(byref m as _
system.windows.forms.message) as
boolean
if m.msg = wm_keydown then
select
case m.wparam.toint32
case consolekey.enter
raiseevent onenterkey(button01, new system.eventargs)
case consolekey.f4
raiseevent onf4(mybase.activecontrol.name)
endselect
endif
return
mybase.processkeypreview(m)
endfunction
endclass
使用者控制項上的預設按鈕
介紹 在設計表單時,屬性acceptbutton和keypreview對於自動響應使用者操作 如按enter key,esc key等 非常有用。當您建立自己的使用者控制項時,這些屬性不可用。至少,現在還不是時候。背景 使用windows內建的訊息傳遞系統可以幫助我們解決這個問題。這就是我們的工作和...
修改按鈕控制項上的字型
有時候需要修改某乙個按鈕上的字型,可用如下方法 令控制項字型變大變粗 hwnd m hname getdlgitem m hwnd,idc prtstp set 通過控制項id獲取控制項控制代碼 hfont hfont hfont sendmessage m hname,wm getfont,0,0...
c winForm 簡單的按鈕使用者控制項示例
一般情況下 按鈕是不用做成使用者控制項的 因為button本身已經可以滿足我們的常規需要 將按鈕做成使用者控制項 是為了我們開發程式時 可以對用到的一批按鈕進行同類操作 如驗證某一許可權 更換某一 等 本次示例只實現最簡單的按鈕效果 1.開啟vs 新建windows應用程式專案 winformstu...