Visual C# 2005實(shí)現(xiàn)控件中捕獲按鍵
2006/12/13 9:29:15
如何于Windows Form控件中捕捉按鍵向來(lái)是許多程序員所關(guān)心的課題,基本上,標(biāo)準(zhǔn)的KeyUp、KeyDown與KeyPress事件就足以去捕捉并處理按鍵。
然而問題在于,并非所有的控件會(huì)在所有的情況下為所有的按鍵操作產(chǎn)生這些事件。
圖CH8_DemoForm004.cs運(yùn)行畫面
如果您希望不管控件的狀況如何,都能夠順利地捕捉Windows Form控件中的按鍵,必須根據(jù)該控件的類派生出一個(gè)新的類并重寫ProcessCmdKey方法,并在此重寫方法中編寫程序代碼來(lái)捕捉并處理您所需的按鍵。系統(tǒng)會(huì)傳遞兩個(gè)參數(shù)給ProcessCmdKey方法:msg與keyData。msg參數(shù)含有所要處理的窗口信息(例如:WM_KEYDOWN),此窗口信息是以傳址方式傳遞的。keyData參數(shù)則會(huì)含有被按下的按鍵的按鍵碼,也就是其中一個(gè)Keys值(注意,keyData參數(shù)的類型是Keys枚舉類型)。如果CTRL或ALT鍵也被按下,keyData參數(shù)還會(huì)含有輔助按鍵(Modifier Key)信息。
您并非一定要使用msg參數(shù),也就是說(shuō),您可以忽略它。不過(guò)利用msg參數(shù)來(lái)檢測(cè)窗口信息倒是一項(xiàng)不錯(cuò)的選擇。在稍后的程序范例中,我們會(huì)去檢測(cè)窗口信息是否為WM_KEYDOWN,以便確認(rèn)這是一個(gè)按鍵事件。此外,我們也會(huì)去檢測(cè)窗口信息是否為WM_SYSKEYDOWN,以便確認(rèn)按鍵組合是否包含輔助按鍵。
由于DataGridView控件的狀況最為復(fù)雜,因而在此我們就要示范如何在DataGridView控件中捕捉按鍵,請(qǐng)切記,您可以將同樣的方法應(yīng)用在其他的控件中。圖2所示是程序范例CH8_DemoForm004.cs的運(yùn)行畫面,從窗體的標(biāo)題欄變化可以看出,只要DataGridView控件取得焦點(diǎn),不論它是否顯示數(shù)據(jù),都能夠捕捉用戶在DataGridView控件中的按鍵。顯而易見地,本程序范例的關(guān)鍵在于必須根據(jù)DataGridView控件派生出一個(gè)新的類并重寫其ProcessCmdKey方法。這里將派生類MyDataGridView的程序代碼列示如下(編寫在MyDataGridView.cs中):
public partial class MyDataGridView :
System.Windows.Forms.DataGridView
{
...
...
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
if ((msg.Msg == WM_KEYDOWN) ||(msg.Msg == WM_SYSKEYDOWN))
{
switch (keyData)
{
case Keys.Down:
this.Parent.Text = "向下鍵已經(jīng)被捕捉";
break;
case Keys.Up:
this.Parent.Text = "向上鍵已經(jīng)被捕捉";
break;
case Keys.Left:
this.Parent.Text = "向左鍵已經(jīng)被捕捉";
break;
case Keys.Right:
this.Parent.Text = "向右鍵已經(jīng)被捕捉";
break;
case Keys.Home:
this.Parent.Text = "Home 鍵已經(jīng)被捕捉";
break;
case Keys.End:
this.Parent.Text = "End 鍵已經(jīng)被捕捉";
break;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
返回列表
返回首頁(yè)
主站蜘蛛池模板:
破了亲妺妺的处免费视频国产|
中国精品白嫩bbwbbw|
日本三级香港三级人妇99|
亚洲午夜精品久久久久久浪潮
|
午夜影视免费完整高清在线观看网站|
国产又大又粗又长免费视频|
国产视频手机在线观看|
www天堂在线|
成人欧美一区二区三区|
久久亚洲国产精品|
最近中文字幕mv2018免费看|
亚洲成AV人片在线观看ww|
狠狠色丁香婷婷综合久久片|
午夜国产福利在线|
色噜噜狠狠狠狠色综合久|
国产婷婷一区二区三区|
菠萝视频在线完整版|
国产香蕉国产精品偷在线|
chinesefree国语对白|
少妇人妻精品一区二区|
中文字幕免费观看视频|
日本公与熄乱理在线播放370|
乱人伦人妻中文字幕|
欧美乱妇高清无乱码亚洲欧美|
亚洲欧美综合另类|
爱情岛论坛亚洲永久入口口|
全部免费的毛片视频观看|
一级一级特黄女人精品毛片视频|
99热都是精品|
亚洲精品你懂的|
国产超薄肉色丝袜的免费网站
|
一级做a爰片久久毛片免费看|
日批视频在线免费看|
久久棈精品久久久久久噜噜|
最近中文字幕免费mv在线视频|
亚洲另类欧美综合久久图片区
|
成人毛片免费视频播放|
久久久99精品免费观看|
日本少妇高潮喷水xxxxxxx|
久久精品aⅴ无码中文字字幕不卡|
最近免费中文在线视频|