最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# WinForm快捷鍵設(shè)置技巧

 更新時(shí)間:2015年10月23日 11:36:05   作者:凌晨三秒  
這篇文章主要給大家介紹C# winform快捷鍵設(shè)置技巧,涉及到C winform快捷鍵相關(guān)知識(shí),對(duì)C winform知識(shí)感興趣的朋友可以參考下本篇文章

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

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

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

2、Ctrl+*及其他組合鍵

把 Form 的 KeyPreview 屬性設(shè)為 True

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

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 + 數(shù)字0
   {
     MessageBox.Show("按下了Control + Alt + 0");
      }

         另外的,與窗體的AcceptButton屬性相關(guān)聯(lián)的按鈕,將與鍵盤上的Enter鍵對(duì)應(yīng);與窗體的CancelButton屬性相關(guān)聯(lián)的按鈕,將與鍵盤上的Ecs鍵對(duì)應(yīng)。
}

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

鍵   代碼    

  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}   
  數(shù)字鍵盤加號(hào)   {ADD}   
  數(shù)字鍵盤減號(hào)   {SUBTRACT}   
  數(shù)字鍵盤乘號(hào)   {MULTIPLY}   
  數(shù)字鍵盤除號(hào)   {DIVIDE}   

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

#region 快捷鍵相關(guān)
///
/// 記錄快捷鍵
///

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;
}
///
/// 將按鍵轉(zhuǎn)換成相應(yīng)字符
///
/// 按鍵
/// 字符
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();
  }
}
///
/// 設(shè)置按鍵不響應(yīng)
///
private void txtHotKey_KeyPress(object sender, KeyPressEventArgs e)
{
  e.Handled = true;
}
///
/// 釋放按鍵后,若是無實(shí)際功能鍵,則置無
///
private void txtHotKey_KeyUp(object sender, KeyEventArgs e)
{
  CheckHotkey(sender);
}
///
/// 失去焦點(diǎn)后,若是無實(shí)際功能鍵,則置無
///
private void txtHotKey_LostFocus(object sender, EventArgs e)
{
  CheckHotkey(sender);
}
///
/// 檢查是否無實(shí)際功能鍵,是則置無
///
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 

#實(shí)現(xiàn)快捷鍵(系統(tǒng)熱鍵)響應(yīng)

在應(yīng)用中,我們可能會(huì)需要實(shí)現(xiàn)像Ctrl+C復(fù)制、Ctrl+V粘貼這樣的快捷鍵,本文簡(jiǎn)單介紹了它的實(shí)現(xiàn),并給出了一個(gè)實(shí)現(xiàn)類。

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

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace KoalaStudio.BookshopManager
{
  class HotKey
  {
    //如果函數(shù)執(zhí)行成功,返回值不為0。
    //如果函數(shù)執(zhí)行失敗,返回值為0。要得到擴(kuò)展錯(cuò)誤信息,調(diào)用GetLastError。
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool RegisterHotKey(
      IntPtr hWnd,        //要定義熱鍵的窗口的句柄
      int id,           //定義熱鍵ID(不能與其它ID重復(fù))      
      KeyModifiers fsModifiers,  //標(biāo)識(shí)熱鍵是否在按Alt、Ctrl、Shift、Windows等鍵時(shí)才會(huì)生效
      Keys vk           //定義熱鍵的內(nèi)容
      );
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool UnregisterHotKey(
      IntPtr hWnd,        //要取消熱鍵的窗口的句柄
      int id           //要取消熱鍵的ID
      );
    //定義了輔助鍵的名稱(將數(shù)字轉(zhuǎn)變?yōu)樽址员阌谟洃?,也可去除此枚舉而直接使用數(shù)值)
    [Flags()]
    public enum KeyModifiers
    {
      None = 0,
      Alt = 1,
      Ctrl = 2,
      Shift = 4,
      WindowsKey = 8
    }
  }
}

簡(jiǎn)單說明一下:

“public static extern bool RegisterHotKey()”這個(gè)函數(shù)用于注冊(cè)熱鍵。由于這個(gè)函數(shù)需要引用user32.dll動(dòng)態(tài)鏈接庫(kù)后才能使用,并且

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

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

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

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

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

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

在FormA的Activate事件中注冊(cè)熱鍵,本例中注冊(cè)Shift+S,Ctrl+Z,Alt+D這三個(gè)熱鍵。這里的Id號(hào)可任意設(shè)置,但要保證不被重復(fù)。

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

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

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

重載FromA中的WndProc函數(shù)

/// 
/// 監(jiān)視Windows消息
/// 重載WndProc方法,用于實(shí)現(xiàn)熱鍵響應(yīng)
/// 
/// 
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
          //此處填寫快捷鍵響應(yīng)代碼     
          break;
        case 101:  //按下的是Ctrl+B
          //此處填寫快捷鍵響應(yīng)代碼
          break;
        case 102:  //按下的是Alt+D
          //此處填寫快捷鍵響應(yīng)代碼
          break;
      }
    break;
  }
  base.WndProc(ref m);
}

完成代碼后,我們?cè)诖绑w中按下Shift+S、Ctrl+B、Alt+D這三組快捷鍵中的任意一組時(shí),程序都會(huì)做出響應(yīng)的反應(yīng)。

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

相關(guān)文章

  • 聊聊C# 中HashTable與Dictionary的區(qū)別說明

    聊聊C# 中HashTable與Dictionary的區(qū)別說明

    這篇文章主要介紹了聊聊C# 中HashTable與Dictionary的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#使用Task實(shí)現(xiàn)異步方法

    C#使用Task實(shí)現(xiàn)異步方法

    本文主要介紹了C#使用Task實(shí)現(xiàn)異步方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C#調(diào)用執(zhí)行命令行窗口(CMD)的方法與技巧

    C#調(diào)用執(zhí)行命令行窗口(CMD)的方法與技巧

    在 C# 的編程世界里,我們常常會(huì)遇到需要與操作系統(tǒng)底層進(jìn)行交互的場(chǎng)景,這時(shí),調(diào)用命令行窗口(CMD)就成為了一個(gè)強(qiáng)大的工具,通過 C# 調(diào)用 CMD 都能為我們提供極大的便利,極大地拓展了 C# 應(yīng)用程序的功能邊界,本文介紹了C#中調(diào)用執(zhí)行CMD的方法與技巧
    2025-01-01
  • C#網(wǎng)絡(luò)編程之Socket編程

    C#網(wǎng)絡(luò)編程之Socket編程

    本文詳細(xì)講解了C#網(wǎng)絡(luò)編程的Socket編程,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C#實(shí)現(xiàn)Winform無邊框移動(dòng)的方法

    C#實(shí)現(xiàn)Winform無邊框移動(dòng)的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)Winform無邊框移動(dòng)的方法,涉及C#針對(duì)WinForm窗口操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C#如何取硬件標(biāo)志

    C#如何取硬件標(biāo)志

    C#如何取硬件標(biāo)志...
    2007-03-03
  • C#十五子游戲編寫代碼

    C#十五子游戲編寫代碼

    這篇文章主要為大家詳細(xì)介紹了C#十五子游戲的編寫代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • C#中foreach實(shí)現(xiàn)原理詳解

    C#中foreach實(shí)現(xiàn)原理詳解

    這篇文章主要為大家詳細(xì)介紹了C#中foreach實(shí)現(xiàn)原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • C#日期格式強(qiáng)制轉(zhuǎn)換方法(推薦)

    C#日期格式強(qiáng)制轉(zhuǎn)換方法(推薦)

    下面小編就為大家分享一C#日期格式強(qiáng)制轉(zhuǎn)換的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • 利用C#實(shí)現(xiàn)獲取與監(jiān)控電腦系統(tǒng)信息

    利用C#實(shí)現(xiàn)獲取與監(jiān)控電腦系統(tǒng)信息

    在C#中,獲取與監(jiān)控電腦系統(tǒng)信息通??梢酝ㄟ^多種方式實(shí)現(xiàn),這篇文章主要為大家整理了幾種常見的方法及其示例代碼,希望對(duì)大家有所幫助
    2024-11-11

最新評(píng)論

嵊泗县| 轮台县| 托里县| 商都县| 德兴市| 噶尔县| 纳雍县| 米易县| 罗定市| 柳州市| 琼海市| 民权县| 宁化县| 永善县| 中江县| 潜山县| 建昌县| 台北市| 鄂温| 板桥市| 沙坪坝区| 余干县| 利川市| 友谊县| 南投市| 汕头市| 东港市| 平远县| 新晃| 利川市| 江城| 黄梅县| 翼城县| 东平县| 察隅县| 五台县| 铜鼓县| 贞丰县| 高雄市| 灵璧县| 乌苏市|