介紹 在設計表單時,屬性acceptbutton和keypreview對於自動響應使用者操作(如按enter-key, esc-key等)非常有用。當您建立自己的使用者控制項時,這些屬性不可用。至少,現在還不是時候。 背景 使用windows內建的訊息傳遞系統可以幫助我們解決這個問題。 這就是我們的工作和編碼 我們必須實現的一點是,當使用者按下我們想要作出反應的鍵時,我們要得到通知。比如說,你設計了乙個搜尋對話方塊使用者控制項,就像windows資源管理器中的檔案搜尋一樣。當使用者按下enter-key時,搜尋應該開始。為了確定按下的鍵,可以為每個子控制項使用_keyup-event,這使得**看起來很糟糕,而且不是乾淨的程式設計風格。這就是我們的使用者控制項鍵預覽功能的作用。要在使用者控制項級別上實現鍵驗證,我們使用. net框架的usercontrol基類實現的函式processkeypreview。要獲得對它的控制,只需在類級別上宣告對它的重寫。 隱藏,複製code
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...