亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# WinForm快捷鍵設置技巧

2020-01-24 01:24:31
字體:
來源:轉載
供稿:網友

1、Alt+*(按鈕快捷鍵)

按鈕快捷鍵也為最常用快捷鍵,其設置也故為簡單。在大家給button、label、menuStrip等其他控件的Text屬性指定名稱時,在其后面加上‘&'然后在加上一個指定字母即可。如:確定(&D),(Alt+D)調用。

如指定多個字母,則第一個為快捷鍵。如:確定(&OK),(Alt+O)調用;文件(&Fill),(Alt+F)調用。

2、Ctrl+*及其他組合鍵

把 Form 的 KeyPreview 屬性設為 True

使用Modifiers可設置組合鍵,鍵盤數字區按鍵的Keys枚舉以D打頭,而小鍵盤上的數字以NumPad打頭。按下Ctrl與Shift組合鍵的方法與其類似,將Ctrl和Alt的枚舉轉換為int型相加后與Modifiers對比,這樣即可判斷是否按下了該組合鍵。

private void  frmMain_KeyDown(object sender, KeyEventArgs e){      //比如你的窗體名是frmMain,確定按鈕btnOK,保存按鈕btnSave      //單鍵     switch (e.KeyCode)     {          case Keys.F1:            btnOK_Click(this, EventArgs.Empty);            break;           case Keys.F2:             btnSave_Click(this, EventArgs.Empty);              break;      }      // 組合鍵      if (e.KeyCode == Keys.F1 && e.Modifiers == Keys.Control)     //Ctrl+F1      {        btnShouYi_Click(this, EventArgs.Empty);      }   if ((int)e.Modifiers == ((int)Keys.Control + (int)Keys.Alt) && e.KeyCode == Keys.D0)  //Ctrl + Alt + 數字0   {     MessageBox.Show("按下了Control + Alt + 0");      }

         另外的,與窗體的AcceptButton屬性相關聯的按鈕,將與鍵盤上的Enter鍵對應;與窗體的CancelButton屬性相關聯的按鈕,將與鍵盤上的Ecs鍵對應。
}

======================================================

鍵   代碼    

  BACKSPACE   {BACKSPACE}、{BS}   或   {BKSP}   
  BREAK   {BREAK}   
  CAPS   LOCK   {CAPSLOCK}   
  DEL   或   DELETE   {DELETE}   或   {DEL}   
  DOWN   ARROW(下箭頭鍵)   {DOWN}   
  END   {END}   
  ENTER   {ENTER}   或   ~   
  ESC   {ESC}   
  HELP   {HELP}   
  HOME   {HOME}   
  INS   或   INSERT   {INSERT}   或   {INS}   
  LEFT   ARROW(左箭頭鍵)   {LEFT}   
  NUM   LOCK   {NUMLOCK}   
  PAGE   DOWN   {PGDN}   
  PAGE   UP   {PGUP}   
  PRINT   SCREEN   {PRTSC}(保留供將來使用)   
  RIGHT   ARROW(右箭頭鍵)   {RIGHT}   
  SCROLL   LOCK   {SCROLLLOCK}   
  TAB   {TAB}   
  UP   ARROW(上箭頭鍵)   {UP}   
  F1   {F1}   
  F2   {F2}   
  F3   {F3}   
  F4   {F4}   
  F5   {F5}   
  F6   {F6}   
  F7   {F7}   
  F8   {F8}   
  F9   {F9}   
  F10   {F10}   
  F11   {F11}   
  F12   {F12}   
  F13   {F13}   
  F14   {F14}   
  F15   {F15}   
  F16   {F16}   
  數字鍵盤加號   {ADD}   
  數字鍵盤減號   {SUBTRACT}   
  數字鍵盤乘號   {MULTIPLY}   
  數字鍵盤除號   {DIVIDE}   

**********************************************************************篇3**************************************************************************************************

#region 快捷鍵相關
///
/// 記錄快捷鍵
///

private void txtHotKey_KeyDown(object sender, KeyEventArgs e){  int HotKeyValue = 0;  string HotKeyString = "";  e.SuppressKeyPress = false;  e.Handled = true;  if (e.Modifiers != Keys.None)  {    switch (e.Modifiers)    {      case Keys.Control:        HotKeyString += "Ctrl + ";        HotKeyValue = (int)e.Modifiers;        break;      case Keys.Alt:        HotKeyString += "Alt + ";        HotKeyValue = (int)e.Modifiers;        break;      case Keys.Shift:        HotKeyString += "Shift + ";        HotKeyValue = (int)e.Modifiers;        break;      case Keys.Control | Keys.Alt:        HotKeyString += "Ctrl + Alt + ";        HotKeyValue = (int)e.Modifiers;        break;      case Keys.Control | Keys.Shift:        HotKeyString += "Ctrl + Shift + ";        HotKeyValue = (int)e.Modifiers;        break;      case Keys.Alt | Keys.Shift:        HotKeyString += "Alt + Shift + ";        HotKeyValue = (int)e.Modifiers;        break;      case Keys.Control | Keys.Alt | Keys.Shift:        HotKeyString += "Ctrl + Alt + Shift + ";        HotKeyValue = (int)e.Modifiers;        break;    }    if (e.KeyCode != Keys.None && e.KeyCode != Keys.ControlKey && e.KeyCode != Keys.Menu && e.KeyCode != Keys.ShiftKey)    {      HotKeyString += KeyCodeToString(e.KeyCode);      HotKeyValue += (int)e.KeyCode;    }  }  else  {    if (e.KeyCode == Keys.Delete || e.KeyCode == Keys.Back)    {      HotKeyString = "無";      HotKeyValue = -1;    }    else if (e.KeyCode != Keys.None)    {      HotKeyString = KeyCodeToString(e.KeyCode);      HotKeyValue = (int)e.KeyCode;    }  }  if (HotKeyValue == 0)    HotKeyValue = -1;  TextBox txtHotKey = (TextBox)sender;  txtHotKey.Text = HotKeyString;  txtHotKey.Tag = HotKeyValue;  txtHotKey.SelectionStart = txtHotKey.Text.Length;}////// 將按鍵轉換成相應字符////// 按鍵/// 字符private string KeyCodeToString(Keys KeyCode){  if (KeyCode >= Keys.D0 && KeyCode <= Keys.D9)  {    return KeyCode.ToString().Remove(0, 1);  }  else if (KeyCode >= Keys.NumPad0 && KeyCode <= Keys.NumPad9)  {    return KeyCode.ToString().Replace("Pad", "");  }  else  {    return KeyCode.ToString();  }}////// 設置按鍵不響應///private void txtHotKey_KeyPress(object sender, KeyPressEventArgs e){  e.Handled = true;}////// 釋放按鍵后,若是無實際功能鍵,則置無///private void txtHotKey_KeyUp(object sender, KeyEventArgs e){  CheckHotkey(sender);}////// 失去焦點后,若是無實際功能鍵,則置無///private void txtHotKey_LostFocus(object sender, EventArgs e){  CheckHotkey(sender);}////// 檢查是否無實際功能鍵,是則置無///private void CheckHotkey(object sender){  TextBox txtHotKey = (TextBox)sender;  if (txtHotKey.Text.EndsWith(" + ") || String.IsNullOrEmpty(txtHotKey.Text))  {    txtHotKey.Text = "無";    txtHotKey.Tag = -1;    txtHotKey.SelectionStart = txtHotKey.Text.Length;  }}

#endregion 

#實現快捷鍵(系統熱鍵)響應

在應用中,我們可能會需要實現像Ctrl+C復制、Ctrl+V粘貼這樣的快捷鍵,本文簡單介紹了它的實現,并給出了一個實現類。

(1)建立一個類文件,命名為HotKey.cs,代碼如下:

using System;using System.Collections.Generic;using System.Runtime.InteropServices;using System.Windows.Forms;namespace KoalaStudio.BookshopManager{  class HotKey  {    //如果函數執行成功,返回值不為0。    //如果函數執行失敗,返回值為0。要得到擴展錯誤信息,調用GetLastError。    [DllImport("user32.dll", SetLastError = true)]    public static extern bool RegisterHotKey(      IntPtr hWnd,        //要定義熱鍵的窗口的句柄      int id,           //定義熱鍵ID(不能與其它ID重復)            KeyModifiers fsModifiers,  //標識熱鍵是否在按Alt、Ctrl、Shift、Windows等鍵時才會生效      Keys vk           //定義熱鍵的內容      );    [DllImport("user32.dll", SetLastError = true)]    public static extern bool UnregisterHotKey(      IntPtr hWnd,        //要取消熱鍵的窗口的句柄      int id           //要取消熱鍵的ID      );    //定義了輔助鍵的名稱(將數字轉變為字符以便于記憶,也可去除此枚舉而直接使用數值)    [Flags()]    public enum KeyModifiers    {      None = 0,      Alt = 1,      Ctrl = 2,      Shift = 4,      WindowsKey = 8    }  }}

簡單說明一下:

“public static extern bool RegisterHotKey()”這個函數用于注冊熱鍵。由于這個函數需要引用user32.dll動態鏈接庫后才能使用,并且

user32.dll是非托管代碼,不能用命名空間的方式直接引用,所以需要用“DllImport”進行引入后才能使用。于是在函數前面需要加上

“[DllImport("user32.dll", SetLastError = true)]”這行語句。

“public static extern bool UnregisterHotKey()”這個函數用于注銷熱鍵,同理也需要用DllImport引用user32.dll后才能使用。

“public enum KeyModifiers{}”定義了一組枚舉,將輔助鍵的數字代碼直接表示為文字,以方便使用。這樣在調用時我們不必記住每一個輔

助鍵的代碼而只需直接選擇其名稱即可。

(2)以窗體FormA為例,介紹HotKey類的使用

在FormA的Activate事件中注冊熱鍵,本例中注冊Shift+S,Ctrl+Z,Alt+D這三個熱鍵。這里的Id號可任意設置,但要保證不被重復。

private void Form_Activated(object sender, EventArgs e){  //注冊熱鍵Shift+S,Id號為100。HotKey.KeyModifiers.Shift也可以直接使用數字4來表示。  HotKey.RegisterHotKey(Handle, 100, HotKey.KeyModifiers.Shift, Keys.S);  //注冊熱鍵Ctrl+B,Id號為101。HotKey.KeyModifiers.Ctrl也可以直接使用數字2來表示。  HotKey.RegisterHotKey(Handle, 101, HotKey.KeyModifiers.Ctrl, Keys.B);  //注冊熱鍵Alt+D,Id號為102。HotKey.KeyModifiers.Alt也可以直接使用數字1來表示。  HotKey.RegisterHotKey(Handle, 102, HotKey.KeyModifiers.Alt, Keys.D);}

在FormA的Leave事件中注銷熱鍵。

private void FrmSale_Leave(object sender, EventArgs e){  //注銷Id號為100的熱鍵設定  HotKey.UnregisterHotKey(Handle, 100);  //注銷Id號為101的熱鍵設定  HotKey.UnregisterHotKey(Handle, 101);// http://ike.126.com  //注銷Id號為102的熱鍵設定  HotKey.UnregisterHotKey(Handle, 102);}

重載FromA中的WndProc函數

/// /// 監視Windows消息/// 重載WndProc方法,用于實現熱鍵響應/// /// protected override void WndProc(ref Message m){  const int WM_HOTKEY = 0x0312;  //按快捷鍵   switch (m.Msg)  {    case WM_HOTKEY:      switch (m.WParam.ToInt32())      {        case 100:  //按下的是Shift+S          //此處填寫快捷鍵響應代碼               break;        case 101:  //按下的是Ctrl+B          //此處填寫快捷鍵響應代碼          break;        case 102:  //按下的是Alt+D          //此處填寫快捷鍵響應代碼          break;      }    break;  }  base.WndProc(ref m);}

完成代碼后,我們在窗體中按下Shift+S、Ctrl+B、Alt+D這三組快捷鍵中的任意一組時,程序都會做出響應的反應。

以上內容是小編給大家介紹的C# WinForm快捷鍵設置技巧,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品久久久久久福利| 欧美国产高跟鞋裸体秀xxxhd| 亚洲精品美女在线观看播放| 欧美久久精品午夜青青大伊人| 最新国产成人av网站网址麻豆| 亚洲人成电影网站色xx| 中文欧美日本在线资源| 国产精品中文久久久久久久| 中文字幕亚洲专区| 久久久亚洲天堂| 91中文精品字幕在线视频| 高清一区二区三区日本久| 欧美精品videos性欧美| 国产欧美日韩精品在线观看| 国产精品免费网站| 中文日韩电影网站| 综合激情国产一区| 日韩欧美一区二区三区| 欧美日韩综合视频| 久久久成人精品视频| 亚洲人精选亚洲人成在线| 亚洲精品二三区| 国模精品视频一区二区三区| 97国产精品久久| 欧美激情综合色综合啪啪五月| 久久视频在线免费观看| 久久久久久久色| 日韩av免费在线| 九九精品视频在线观看| 欧美成人合集magnet| 精品久久久久久中文字幕大豆网| 精品少妇一区二区30p| 久久久久久久999| 亚洲夜晚福利在线观看| xxxx欧美18另类的高清| 俺也去精品视频在线观看| 国产精品一区二区3区| 黑人巨大精品欧美一区免费视频| 欧美视频免费在线观看| 性色av一区二区咪爱| 神马久久桃色视频| 亚洲女同精品视频| 亚洲午夜精品久久久久久久久久久久| 欧美日韩美女在线观看| 91精品久久久久久| 久久噜噜噜精品国产亚洲综合| 日本一本a高清免费不卡| 久久久精品国产亚洲| 亚洲欧美另类人妖| 精品欧美国产一区二区三区| 激情懂色av一区av二区av| 性视频1819p久久| 精品女厕一区二区三区| 最近免费中文字幕视频2019| 亚洲国产日韩欧美综合久久| 在线视频国产日韩| 色偷偷888欧美精品久久久| 亚洲色图综合久久| 亚洲精品成a人在线观看| 色综合久久中文字幕综合网小说| 久久综合久久美利坚合众国| 日本午夜精品理论片a级appf发布| 欧美日本高清视频| 不卡在线观看电视剧完整版| 亚洲天堂av在线免费观看| 欧美亚洲激情在线| 韩国一区二区电影| 亚洲综合精品一区二区| 欧美日本精品在线| 国产精品视频免费在线| 亚洲一区二区日本| 97人洗澡人人免费公开视频碰碰碰| 久久国产精品亚洲| 91人人爽人人爽人人精88v| 亚洲精品一区二区三区不| 国产欧美一区二区三区在线| 国产成人短视频| 69av成年福利视频| 国产精品678| 欧美一区三区三区高中清蜜桃| 国产香蕉一区二区三区在线视频| 精品美女永久免费视频| 国产极品精品在线观看| 亚洲自拍偷拍视频| 欧美大人香蕉在线| 国产精品久久久久久影视| 亚洲国产精品专区久久| 精品美女国产在线| 成人网在线免费看| 欧美黑人一级爽快片淫片高清| 中日韩午夜理伦电影免费| 国产精品久久久久久av福利软件| 国产欧美在线观看| 欧美成人免费全部观看天天性色| 国产精品美乳在线观看| 久久九九全国免费精品观看| 中文字幕亚洲情99在线| 综合网日日天干夜夜久久| 在线日韩日本国产亚洲| 精品无人区太爽高潮在线播放| 国产精品一区专区欧美日韩| 成人女保姆的销魂服务| 欧美激情在线有限公司| 日韩精品中文字幕在线播放| 欧美激情亚洲一区| 亚洲国产精品中文| 91色在线视频| 色偷偷av一区二区三区乱| 国产精品视频精品视频| 成人av资源在线播放| 欧美影院在线播放| 久久精品视频一| 精品国产一区二区三区久久久狼| 国产一区二区三区三区在线观看| 国产成一区二区| 麻豆成人在线看| 亚洲激情视频网站| 欧美激情一级欧美精品| 欧美最顶级的aⅴ艳星| 亚洲热线99精品视频| 色小说视频一区| 国产成人精品优优av| 九九久久综合网站| 欧美激情国产日韩精品一区18| 亚洲欧美日韩一区在线| 国产精品视频区| 伊人青青综合网站| 91在线免费看网站| 亚洲人成免费电影| 国产欧美精品va在线观看| 国产98色在线| 欧美老少配视频| 日韩精品在线免费播放| 一区二区三区黄色| 久久人人97超碰精品888| 国产精品久久久久77777| 中文字幕亚洲色图| 久久手机精品视频| 国产美女久久精品香蕉69| 久久久最新网址| 日韩av中文在线| 国内精品伊人久久| 国产精品久久久久久久久久久久久久| 羞羞色国产精品| 亚洲欧美制服另类日韩| 精品亚洲国产成av人片传媒| 青草青草久热精品视频在线观看| 色悠悠国产精品| 国产在线观看不卡| 亚洲精品午夜精品| 成人妇女免费播放久久久| 国产精品久久久久久av福利软件| 26uuu亚洲国产精品| 国产精品吹潮在线观看| 97在线视频免费看| 成人国产精品久久久| 日韩成人在线播放| 8x拔播拔播x8国产精品| 日韩av大片在线| 国产成人91久久精品| 伦理中文字幕亚洲| 成人黄色片网站| 久久99热精品这里久久精品| zzjj国产精品一区二区|