程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> WinForm中KeyDown,KeyPress和KeyUp的次序與差別解析

WinForm中KeyDown,KeyPress和KeyUp的次序與差別解析

編輯:C#入門知識

WinForm中KeyDown,KeyPress和KeyUp的次序與差別解析。本站提示廣大學習愛好者:(WinForm中KeyDown,KeyPress和KeyUp的次序與差別解析)文章只能為提供參考,不一定能成為您想要的結果。以下是WinForm中KeyDown,KeyPress和KeyUp的次序與差別解析正文


WinForm中的鍵盤按鍵有KeyDown,KeyPress和KeyUp事宜。那末它們的次序和差別在哪裡呢?本文就此作出以下剖析:

1、次序:

依據MSDN所講,三者的次序是:KeyDown>KeyPress>KeyUp.

2、差別:

KeyDown和KeyPress很接近,都是在按鍵按下時刻前後產生。KeyUp是放失落某個鍵以後產生的事宜。

3、KeyDown和KeyPress:

KeyDown的事宜中屬性是KeyEventArgs,個中包括三個主要屬性:

1)KeyCode(前往一個Keys的列舉,可以檢測除ScrollLock和NumLock以外的其它鍵值)。

2)KeyValue(同等於KeyCode,只不外是int類型)。

3)KeyData(這個MSDN沒有說清晰,不太輕易懂得。就我做試驗,實際上是一個檢測Ctrl,Shift或許Alt加其他鍵的時刻(組合鍵!)可以都被檢測出來。絕對而言,1)和2)只能檢測一個鍵值,不克不及檢測組合鍵)。

這裡給出檢測組合鍵的例子(留意,先按下Shift,Alt或許Ctrl,然後其他鍵按下去)

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
  if (e.KeyData==(Keys.A|Keys.Shift))
  {
 MessageBox.Show("按下了Shift+A!");
  }
}

平日,KeyUp記載組合鍵的次序必定和KeyDown相反(好比你Shift+A,那末KeyUp中是A+Shift)。不外就檢測組合鍵有關其次序。

其他檢測辦法:

e.Modifiers(只記載Ctrl,Shift和Alt),加e.KeyChar等斷定:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
  if (e.Modifiers == Keys.Shift && e.KeyCode == Keys.A)
  {
 MessageBox.Show("按下了Shift+A");
  }
}

KeyEventArgs本身就有Alt,Control和Shift,是以還可以如許簡化:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
  if (e.Shift && e.KeyCode == Keys.A)
  {
 MessageBox.Show("按下了Shift+A");
  }
}

3)留意!Alt,Control或許Shift有閣下之分。是以檢測閣下的話用第三種辦法弗成能(KeyEventArgs不斷定閣下,可使用1或許2辦法,借助Keys列舉便可)。

4)假如是要做相似“快捷鍵”(比方多窗口窗體,父窗口中按下某組合鍵彈出子窗口,建議把父窗口的KeyPreview設置True,如許窗口比其外部一切的子控件優先獲得事宜觸發)。

5)ShiftKey和Shift的差別:

Shift:不克不及零丁作為斷定應用,必需加別的一個字母鍵作為組合鍵時刻應用。

Shiftkey:零丁按下Shift鍵(沒有其它組合鍵)時刻斷定應用。(同理:LShiftKey和RShiftKey)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved