程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> WinForm中快捷鍵與組合按鍵的設置方法

WinForm中快捷鍵與組合按鍵的設置方法

編輯:C#基礎知識
第一種方法。。代碼復雜,操作簡單的快捷鍵

新建一個空白窗體


每個窗體都有這樣3個事件:KeyDown、KeyPress、KeyUp,KeyDown和KeyPress都是按鍵按下事件,但KeyDown用的是KeyCode跟鍵盤各個按鍵相對應,它對應Keys枚舉,用起來比較方便;而KeyPress用的是KeyChar,這個就要找ASC II編碼了,不方便。KeyUp是按鍵彈起事件,不常用,因此我們使用KeyDown事件來設置窗體的快捷鍵,雙擊該事件後的空白生成代碼,首先我們設置單個按鍵,讓它按下F11最大化,再次按下還原,在事件中加入如下代碼:

代碼如下:

if (e.KeyCode == Keys.F11)
{
if (WindowState == FormWindowState.Maximized)
WindowState = FormWindowState.Normal;
else
WindowState = FormWindowState.Maximized;
}


若窗體的WindowState為Maximized則還原,否則最大化,運行下試試,很好用 :-)

下面在窗體中加入一個名為txtInput的TextBox,兩個名為btnConfirm、btnExit的Button:



再次運行窗體,按下F11,不起作用了?這是怎麼回事?

因為這時窗體運行後,焦點已不在窗體上,而在控件上了,我們要將KeyPreview設置為True,向窗體注冊控件上產生的鍵盤事件,再次運行,問題解決了。

那麼組合按鍵又怎麼設置呢?例如要按下Alt和數字0,需要這樣:

代碼如下:

if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.D0)
{
    MessageBox.Show("按下了Alt + 0");
}

使用Modifiers可設置組合鍵,鍵盤數字區按鍵的Keys枚舉以D打頭,而小鍵盤上的數字以NumPad打頭。按下Ctrl與Shift組合鍵的方法與其類似,下面我們看看按下Ctrl + Alt + 數字0該怎樣設置:

代碼如下:

if ((int)e.Modifiers == ((int)Keys.Control + (int)Keys.Alt) && e.KeyCode == Keys.D0)
{
    MessageBox.Show("按下了Control + Alt + 0");
}

將Ctrl和Alt的枚舉轉換為int型相加後與Modifiers對比,這樣即可判斷是否按下了該組合鍵。

那麼 怎麼觸發按鈕事件呢?

如按F1觸發confirm按鈕事件

代碼如下:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
               if (e.KeyCode == Keys.F1)
             {

                         / /如果還有keypress事件,不讓此快捷鍵觸發其事件可加一句代碼

                      e.Handled = true;   //將Handled設置為true,指示已經處理過KeyPress事件
                      confirm1.PerformClick();////執行單擊confirm1的動作
             }
}


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

另外一種簡單快捷鍵的方法

在設置Button的Text屬性時,在一個英文字母的前面加上&(and符),例如將btnConfirm的Text屬性設置為:&Confirm,當運行窗體,按下Alt + C時,就相當於按下該鍵。

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