使用者控制項上的預設按鈕

2022-02-12 21:55:02 字數 1281 閱讀 3452

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

public

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或cancelbutton的屬性來實現更大的靈活性。 本文**於:

使用者控制項上的預設按鈕

在設計表單時,屬性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...