2009-03-10 12 views

答えて

2

メニューにないコマンドにアクセラレータキーを使用する明白な方法はありませんが、これを追加することはあまり難しくありません。基本的な手順は次の5つです。

アクセラレータの列挙を定義します。

private enum Accelerators { Unspecified = 0, Home, Save, Print, Logout }; 

列挙値を格納するハッシュテーブルを作成します。

Hashtable _accelHash() = new Hashtable(); 

アクセラレータキーを表現するクラスを作成します。

キーの列挙でテーブルをロードします。

_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.H), 
            Accelerators.Home); 
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.S), 
            Accelerators.Save); 
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.P), 
            Accelerators.Print); 
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.X), 
            Accelerators.Logout); 

最後に、ProcessCmdKeyをオーバーライドし、右の方法にディスパッチするswitch文を使用します。また

protected override bool ProcessCmdKey(ref Message msg, 
             Keys keyData) 
{ 
    ... 
} 

、もう少し洗練されたアプローチのために、あなたがいる限り、彼らはすべて同じメソッドシグネチャを持っていたとして、起動したかった方法だった代表団に、ハッシュテーブルマップを持つことができます。

Here's a short article上記の手順をさらに詳しく説明しています。

0

ショートカットキーを実装する一般的な方法は、KeyDownやKeyUpなどのキーボードイベントでそれらを検出することです。

public void Form1_KeyUp(object sender,KeyEventArgs e) 
{ 
if (e.Control && e.KeyData==Keys.A) 
{ 
//handle ctrl+a 
} 
関連する問題