C Winform程式設計中合理地設計程式熱鍵

2021-10-11 09:31:44 字數 4178 閱讀 3558

在c#winform程式設計中,合理的設計程式熱鍵,使視障使用者更加便捷使用

我們都知道,視障人士使用電腦主要是借助螢幕閱讀器的朗讀和操作,這種輔助操作基本都是通過鍵盤操作來完成的

在程式設計中,一款優秀的軟體,不僅要有好的功能,可以解決使用者的實際問題,而且也需要考慮如何能讓使用者更加高效便捷的使用

例如,視窗介面上有許多控制項,那麼我們不僅要考慮這些控制項視障使用者是否可以操作,而且也需要考慮如何能讓視障使用者更高效便捷的使用這些控制項功能

在c#winform程式開發中,我們可以通過合理設計程式的熱鍵,通過按下對應熱鍵,執行相應的功能,讓鍵盤操作更加便捷,可使操作的時間大大減少

這種操作尤其對於現如今許多視障人士通過網際網路進行辦公的場景,可起到事半功倍的作用

提公升工作效率,使工作更加高效

下面總結了c#winform程式設計中四種常用的設定熱鍵的方式

*一、alt + (按鈕快捷鍵)

在button、label、menustrip,toolstripmenuitem等控制項設定text屬性時在名稱後邊加(&鍵名(,例如button1.text= 「使用者登陸(&l)」

就可為button1設定快捷鍵,這時候按alt+l就可執行使用者登陸事件

二、窗體的按鍵事件

在winform中設定要使用組合鍵的窗體的keypreview(向窗體註冊鍵盤事件)屬性為true

然後使用窗體的keydown事件(在首次按下某個鍵時發生)

例項**:

private

void

ld007mainform_keydown

(object sender,

keyeventargs e)

break

;case keys.f2:

e.handled =

true

;//將handled設定為true,指示已經處理過keypress事件

if(tabcontrol.selectedtab.text ==

"波形讀取"

)break

;case keys.f3:

e.handled =

true

;//將handled設定為true,指示已經處理過keypress事件

if(tabcontrol.selectedtab.text ==

"波形讀取"

)break

;case keys.f4:

e.handled =

true

;//將handled設定為true,指示已經處理過keypress事件

if(tabcontrol.selectedtab.text ==

"波形讀取"

)break

;case

(keys.up | keys.control):/

/按下alt+s鍵

e.handled =

true

;//將handled設定為true,指示已經處理過keypress事件

if(tabcontrol.selectedtab.text ==

"波形讀取"

)break

;case

(keys.down | keys.control):/

/按下alt+s鍵

e.handled =

true

;//將handled設定為true,指示已經處理過keypress事件

if(tabcontrol.selectedtab.text ==

"波形讀取"

)break

;case

(keys.up | keys.alt):/

/按下alt+s鍵

e.handled =

true

;//將handled設定為true,指示已經處理過keypress事件

if(tabcontrol.selectedtab.text ==

"波形讀取"

)break

;case

(keys.down | keys.alt):/

/按下alt+s鍵

e.handled =

true

;//將handled設定為true,指示已經處理過keypress事件

if(tabcontrol.selectedtab.text ==

"波形讀取"

)break

;case

(keys.c | keys.alt):/

/按下alt+x

e.handled =

true

;//將handled設定為true,指示已經處理過keypress事件

if(tabcontrol.selectedtab.text ==

"波形讀取"

)break

;case keys.escape:

//按下alt+x

if(tabcontrol.selectedtab.text ==

"波形讀取"

)break

;default

:break;}

}

private

void

form1_keydown

(object sender,

keyeventargs e)

else

if(e.keydata ==

(keys.x | keys.alt)

)//按下alt+x

else

if(e.keydata == keys.escape)

//按下esc鍵

this

.close()

;//關閉視窗

}

三、toolstripmenuitem控制項的shortcutkeys屬性在toolstripmenuitemshortcutkeys屬性中也可設定快捷鍵

在窗體工具箱新增乙個contextmenustrip1,將其邦定到listview1上,給contextmenustrip1的items新增乙個toolstripmenuitem

然後設定toolstripmenuitem的shortcutkeys屬性

例如設定為「ctrl+l」,此時按下ctrl+l就可啟用toolstripmenuitem的click事件

四、全域性快捷鍵

例項**:

public

class

hotkey

//定義註冊和解除安裝熱鍵的類

//定義訊息相關的常量

private

const

int wm_hotkey =

0x312

;//視窗訊息-熱鍵

private

const

int wm_create =

0x1;

//視窗訊息-建立

private

const

int wm_destroy =

0x2;

//視窗訊息-銷毀

private

const

int keyid =

0x3572

;//熱鍵id

//重寫窗體的wndproc函式,在視窗建立的時候註冊熱鍵,視窗銷毀時銷毀熱鍵

protected

override

void

wndproc

(ref

message m)

break

;case wm_create:

//視窗訊息-建立

hotkey.

registerhotkey

(handle, keyid,

3, keys.m)

;//設定ctrl+alt+m熱鍵

break

;case wm_destroy:

//視窗訊息-銷毀

hotkey.

unregisterhotkey

(handle, keyid)

;//銷毀熱鍵

break

;default

:break;}

}

合理地使用技術

公司最近有了乙個新的專案,於是你把目前最流行的技術和應用框架都寫在了一張白紙上。這些都是時下最火的技術,你覺得這些技術在你的應用裡都應該能用到。想一想,你的簡歷上將留下漂亮的一筆,用了這些偉大的技術,你的新應用也將具有極高的技術含量。其實盲目地為專案選擇技術框架,不考慮技術是否適合專案,這種做法有些...

正確合理地使用索引

1 合理使用索引 索引是資料庫中重要的資料結構,它的根本目的就是為了提高查詢效率。現在大多數的資料庫產品都採用ibm最先提出的isam索引結構。索引的使用要恰到好處,其使用原則如下 在經常進行連線,但是沒有指定為外來鍵的列上建立索引,而不經常連線的字段則由優化器自動生成索引。在頻繁進行排序或分組 即...

怎樣合理地定義使用者流失

最近最常被問到的就是一些使用者的統計指標,無論是決策層還是產品部門,所以這篇文章重點說下使用者指標的一些內容。假設你想用盡量簡潔有效的資料了解乙個 或產品的使用者情況,你會問哪幾個使用者資料?其實乙個聰明的提問者永遠不會問 的累計使用者數有多少,甚至不會問 的uv是多少,因為這些指標都不能從真正意義...