欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

按鈕快捷鍵也為最常用快捷鍵,其設(shè)置也故為簡單。在大家給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對比,這樣即可判斷是否按下了該組合鍵。

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鍵對應(yīng);與窗體的CancelButton屬性相關(guān)聯(lián)的按鈕,將與鍵盤上的Ecs鍵對應(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ù)字鍵盤加號   {ADD}   
  數(shù)字鍵盤減號   {SUBTRACT}   
  數(shù)字鍵盤乘號   {MULTIPLY}   
  數(shù)字鍵盤除號   {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)用中,我們可能會需要實(shí)現(xiàn)像Ctrl+C復(fù)制、Ctrl+V粘貼這樣的快捷鍵,本文簡單介紹了它的實(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)識熱鍵是否在按Alt、Ctrl、Shift、Windows等鍵時(shí)才會生效
      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
    }
  }
}

簡單說明一下:

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

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事件中注冊熱鍵,本例中注冊Shift+S,Ctrl+Z,Alt+D這三個(gè)熱鍵。這里的Id號可任意設(shè)置,但要保證不被重復(fù)。

private void Form_Activated(object sender, EventArgs e)
{
  //注冊熱鍵Shift+S,Id號為100。HotKey.KeyModifiers.Shift也可以直接使用數(shù)字4來表示。
  HotKey.RegisterHotKey(Handle, 100, HotKey.KeyModifiers.Shift, Keys.S);
  //注冊熱鍵Ctrl+B,Id號為101。HotKey.KeyModifiers.Ctrl也可以直接使用數(shù)字2來表示。
  HotKey.RegisterHotKey(Handle, 101, HotKey.KeyModifiers.Ctrl, Keys.B);
  //注冊熱鍵Alt+D,Id號為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號為100的熱鍵設(shè)定
  HotKey.UnregisterHotKey(Handle, 100);
  //注銷Id號為101的熱鍵設(shè)定
  HotKey.UnregisterHotKey(Handle, 101);// http://ike.126.com
  //注銷Id號為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);
}

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

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

相關(guān)文章

  • C#用戶控件之溫度計(jì)設(shè)計(jì)

    C#用戶控件之溫度計(jì)設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C#用戶控件之溫度計(jì)的設(shè)計(jì)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C#四種計(jì)時(shí)器Timer的區(qū)別和用法

    C#四種計(jì)時(shí)器Timer的區(qū)別和用法

    這篇文章介紹了C#四種計(jì)時(shí)器Timer的區(qū)別和用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#實(shí)現(xiàn)3步手動建DataGridView的方法

    C#實(shí)現(xiàn)3步手動建DataGridView的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)3步手動建DataGridView的方法,實(shí)例分析了C#實(shí)現(xiàn)手動創(chuàng)建DataGridView的原理與技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C#中泛型舉例List<T>與DataTable相互轉(zhuǎn)換

    C#中泛型舉例List<T>與DataTable相互轉(zhuǎn)換

    這篇文章介紹了C#中泛型舉例List<T>與DataTable相互轉(zhuǎn)換的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Unity3D實(shí)現(xiàn)相機(jī)跟隨控制

    Unity3D實(shí)現(xiàn)相機(jī)跟隨控制

    這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)相機(jī)跟隨控制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • WPF利用ScottPlot實(shí)現(xiàn)動態(tài)繪制圖像

    WPF利用ScottPlot實(shí)現(xiàn)動態(tài)繪制圖像

    ScottPlot是基于.Net的一款開源免費(fèi)的交互式可視化庫,支持Winform和WPF等UI框架,本文主要為大家詳細(xì)介紹了如何WPF如何使用ScottPlot實(shí)現(xiàn)動態(tài)繪制圖像,需要的可以參考下
    2023-12-12
  • C#實(shí)現(xiàn)工廠方法模式

    C#實(shí)現(xiàn)工廠方法模式

    這篇文章介紹了C#實(shí)現(xiàn)工廠模式的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • WinForm實(shí)現(xiàn)自定義右下角提示效果的方法

    WinForm實(shí)現(xiàn)自定義右下角提示效果的方法

    這篇文章主要介紹了WinForm實(shí)現(xiàn)自定義右下角提示效果的方法,涉及WinForm自定義提示效果的實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • VSCode調(diào)試C#程序及附缺失.dll文件的解決辦法

    VSCode調(diào)試C#程序及附缺失.dll文件的解決辦法

    這篇文章主要介紹了VSCode調(diào)試C#程序及附缺失.dll文件的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • C#將字母或數(shù)字加密成字母的方法

    C#將字母或數(shù)字加密成字母的方法

    這篇文章主要介紹了C#將字母或數(shù)字加密成字母的方法,涉及C#操作字符串的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03

最新評論