C#_為WinForm窗體定義功能快捷鍵


這里的快捷鍵並非系統全局快捷鍵。僅是普通的當窗體在焦點內是發生。有很多種方法,這里列舉幾種項目中使用到的方法。

Alt+*(一般控件快捷鍵)

       在大家給button、label、menuStrip等控件設置Text屬性時  這個比較簡單,只需為該控件的Text屬性聲明時加上”(&A)”,”(&D)” 之類的標識,例如一個Button按鈕的Text屬性為:this.btnOK.Text=”確定(&A)”;

Ctrl+*(組合鍵)

        當在某個窗體上按下一個組合鍵時發生。常用的如:打印(Ctrl+P),保存(Ctrl+S)…等等。

        首先需設置窗體的KeyPreview(向窗體注冊鍵盤事件)(確定窗體上控件的鍵盤事件是否已向窗體注冊)屬性設置為True

        然后只需在窗體的KeyDown事件中做相應業務處理。

         

private void Form1_KeyDown(object sender, KeyEventArgs e)

{     

    if ((e.KeyCode == Keys.P) && e.Control)    

        PrintToolStripMenuItem.PerformClick(); 

}

 

這里,如果要激活某個Button按鈕事件,有三種寫法:

btnOK.PerformClick();//執行該控件的Click事件

InvokeOnClick(btnOK,null);//為指定的控件引發Click事件

btnOK_Click(null,null);//直接調用按鈕的Click事件,參數都為null

 

 

2、還有一個問題,當使用Ctrl + *快捷鍵時,對於焦點在可寫的控件(如TextBox)上時,可能會將* 鍵值同時輸入,則需要加另一句話將Handled設置為true,以取消 KeyPress 事件。  
 
即:  
 
private void ***_KeyDown(object sender, KeyEventArgs e)  
{  
 
if (e.KeyCode == Keys.F && e.Control)  
{  
 
e.Handled = true; //將Handled設置為true,指示已經處理過KeyPress事件  
button1.PerformClick();   
 
}  
 
}  
 
 
第三種:  
 
還是以button為例。給form添加一個contextMenuStrip1,將其邦定到button上,假設為button1。給contextMenuStrip1添加一個item,然后為它設置快捷鍵(就是你想加在button上的快捷鍵),並且將它的Visible屬性設為false。這樣,button1的快捷鍵設置成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM