PowerTools InputMan for Windows Forms 8.0J > InputManの使い方 > ショートカットコンポーネント > ショートカットキーの割り当て |
ショートカットコンポーネントを使用して、コントロールやフォームにショートカットキーを割り当てる方法について解説します。
デザイン画面では、ショートカットキーの設定専用の「ショートカットキーの編集」エディタを使用して、ショートカットキーの追加、削除、編集作業を行うことができます。
「ショートカットキーの編集」エディタ |
「ショートカットキーの編集」エディタは以下の方法で起動できます。
フォームにショートカットコンポーネントが配置されると、ショートカットキーの割り当てが可能なコントロールのプロパティウィンドウに 「gcShortcut1 の Shortcuts」("gcShortcut1"の名称は、フォームに設定されているショートカットコンポーネントオブジェクトの名称によって異なります)というプロパティが自動的に追加されます。
このプロパティをアクティブにした時に表示される「…」ボタンを押下すると、ショートカットキーの設定を行うエディタが起動します。
スマートタグのメニューから「ショートカットキーの編集...」を選択します。
スマートタグからの起動は、ショートカットキーの設定対象がInputManに含まれるコントロールである場合に限ります。 |
コードでショートカットキーを設定するには、以下の手順を実行します。この手順はショートカットキーの設定対象がInputManに含まれるコントロール以外の場合でも適用できます。
以下のサンプルコードでは標準TextBox クラスのオブジェクトにおいて、ショートカットキー[Ctrl]+[E]にClear メソッドを設定します。コントロールにフォーカスがあるときに[Ctrl]+[E]キーを押すと、TextBox コントロールのテキストが消去されます。
Imports GrapeCity.Win.Editors Public Class Form1 Public Sub New ' フォームに設定されたGcShortcut1とTextBox1が初期化されます。 ' この呼び出しは、Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 End Sub Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ShortcutCollectionオブジェクトを作成します。 Dim sc As New ShortcutCollection() ' Ctrl+EキーとTextBox.Clarメソッドを関連付けます。 sc.Add( Keys.E Or Keys.Control, New MethodInvoker( AddressOf TextBox1.Clear ) ) ' ショートカットキーの設定をGcShortcutに設定します。 GcShortcut1.SetShortcuts( TextBox1, sc ) End Sub End Class
using GrapeCity.Win.Editors; public partial Class Form1 : Form { public Form1() { // フォームに設定されたgcShortcut1とtextBox1が初期化されます。 InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // ShortcutCollectionオブジェクトを作成します。 ShortcutCollection sc = new ShortcutCollection(); // Ctrl+EキーとTextBox.Clearメソッドを関連付けます。 sc.Add( Keys.E | Keys.Control, new MethodInvoker( textBox1.Clear ) ); // ショートカットキーの設定をgcShortcut1に設定します。 gcShortcut1.SetShortcuts( textBox1, sc ); } }
上記のようにShortcutCollection オブジェクトを作成し、SetShortcuts メソッドで設定する方法の他に、GetShortcuts メソッドを利用してShortcutCollection オブジェクトを取得し、Add メソッドでショートカット機能を追加する方法もあります。 以下のサンプルコードは、いずれもGcTextBox1に対して[Enter]キーで次コントロールに、[Shift]+[Enter]で前コントロールにフォーカスを移動するショートカット機能を設定します。
Imports GrapeCity.Win.Editors Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Enterキーで次コントロールに、Shift+Enterキーで前コントロールにフォーカスを移動します。 GcShortcut1.SetShortcuts(GcTextBox1, New ShortcutCollection(New Keys() {Keys.Enter, Keys.Enter Or Keys.Shift} _ , New Object() {GcShortcut1, GcShortcut1} _ , New String() {"NextControl", "PreviousControl"})) End Sub
using GrapeCity.Win.Editors; private void Form1_Load( object sender, EventArgs e ) { // Enterキーで次コントロールに、Shift+Enterキーで前コントロールにフォーカスを移動します。 gcShortcut1.SetShortcuts(gcTextBox1, new ShortcutCollection(new Keys[] { Keys.Enter, Keys.Enter | Keys.Shift } , new object[] { gcShortcut1, gcShortcut1 } , new string[] { "NextControl", "PreviousControl" })); }
Imports GrapeCity.Win.Editors Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Enterキーで次コントロールにフォーカスを移動します。 GcShortcut1.GetShortcuts(GcTextBox1).Add(Keys.Enter _ , GcShortcut1 _ , "NextControl") ' Shift+Enterキーで前コントロールにフォーカスを移動します。 GcShortcut1.GetShortcuts(GcTextBox1).Add(Keys.Enter Or Keys.Shift _ , GcShortcut1 _ , "PreviousControl") End Sub
using GrapeCity.Win.Editors; private void Form1_Load( object sender, EventArgs e ) { // Enterキーで次コントロールにフォーカスを移動します。 gcShortcut1.GetShortcuts(gcTextBox1).Add(Keys.Enter , gcShortcut1 , "NextControl"); // Shift+Enterキーで前コントロールにフォーカスを移動します。 gcShortcut1.GetShortcuts(gcTextBox1).Add(Keys.Enter | Keys.Shift , gcShortcut1 , "PreviousControl"); }
ShortcutKeys プロパティにショートカットキーを登録すると、アプリケーション全体で使用されるショートカットキーを設定することができます。
ショートカットキーが押されるとShortcutKeyDown イベントが発生します。このイベントをハンドルすることで、ショートカットキーが押されたときに特定の処理を実行することができます。
|
以下のコードでは、ショートカットキー[Ctrl]+[E]が押されたときにメッセージボックスを表示します。
Public Class Form1 Public Sub New ' フォームが初期化されます。 ' この呼び出しは、Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 End Sub Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ショートカットキーを設定します。 GcShortcut1.ShortcutKeys.Add( Keys.E Or Keys.Control ) End Sub Private Sub GcShortcut1_ShortcutKeyDown( ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles GcShortcut1.ShortcutKeyDown ' フォームがアクティブな状態のときだけダイアログボックスを表示します。 ' 注意: ' ShortcutKeys.Addメソッドによって登録されたショートカットキーは ' アプリケーション全体で有効になるため、ShortcutKeyDownイベントは ' フォームのアクティブ・非アクティブに関わらす発生します。 If Me Is Form.ActiveForm ' メッセージボックスを表示します。 MessageBox.Show( "Ctrl + E" ) ' イベント処理を終了します。 e.Handled = True End If End Sub End Class
public partial Class Form1 : Form { public Form1() { // フォームが初期化されます。 InitializeComponent(); } private void Form1_Load( object sender, EventArgs e ) { // ショートカットキーを設定します。 gcShortcut1.ShortcutKeys.Add( Keys.E | Keys.Control ); } private void gcShortcut1_ShortcutKeyDown( object sender, KeyEventArgs e ) { // フォームがアクティブな状態のときだけダイアログボックスを表示します。 // 注意: // ShortcutKeys.Addメソッドによって登録されたショートカットキーは // アプリケーション全体で有効になるため、ShortcutKeyDownイベントは // フォームのアクティブ・非アクティブに関わらす発生します。 if( this == Form.ActiveForm ) { // メッセージボックスを表示します。 MessageBox.Show( "Ctrl + E" ); // イベント処理を終了します。 e.Handled = true; } } }