C#を使用してツールを構築しています。これはWindowsアプリケーションです。フォームに1つのテキストボックスがあり、ユーザーがCtrl+FまたはCtrl+を押したときにそのテキストボックスにフォーカスを割り当てたいと思いますS。
どうすればよいですか?
C#を使用してツールを構築しています。これはWindowsアプリケーションです。フォームに1つのテキストボックスがあり、ユーザーがCtrl+FまたはCtrl+を押したときにそのテキストボックスにフォーカスを割り当てたいと思いますS。
どうすればよいですか?
1つの方法は、ProcessCMDKeyイベントをオーバーライドすることです。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.S))
{
MessageBox.Show("Do Something");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
編集:または、keydownイベントを使用することもできます-VisualStudio.NETでショートカットキーをキャプチャする方法を参照してください。
イベントをキャプチャしKeyDown
、ifステートメントをその中に配置して、どのキーが押されたかを確認します。
private void form_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Control && e.KeyCode == Keys.F) || (e.Control && e.KeyCode == Keys.S)) {
txtSearch.Focus();
}
}
まず、Windowsフォームのプロパティが「KeyPreview=true」であることを確認します
2番目のものオープンフォームイベントプロパティそして「KeyDown」をダブルクリックし、イベントの本文内に次のコードを記述します:-
private void form1_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Control && e.KeyCode == Keys.F) || (e.Control && e.KeyCode ==Keys.S))
{
TextBox1.Focus();
}
}
フォームでキーの押下をキャッチするイベントを追加し、キーの押下を分析して、ショートカットキーの1つと一致するかどうかを確認してから、フォーカスを割り当てます。
1つのオプションは、ラベルが付いたコントロールにアクセスキーを割り当てることです。テキストボックスに関連するラベルに基づいてショートカットを割り当てます。
ラベル付きのコントロールにアクセスキーを割り当てるには
- 最初にラベルを描画してから、もう一方のコントロールを描画します。
-また-
コントロールを任意の順序で描画し、ラベルのTabIndexプロパティを他のコントロールより1つ少なく設定します。
ラベルのUseMnemonicプロパティをtrueに設定します。
ラベルのTextプロパティでアンパサンド(&)を使用して、ラベルにアクセスキーを割り当てます。詳細については、「Windowsフォームコントロールのアクセスキーの作成」を参照してください。
下の図では、Alt + Yを押すと、フォーカスがテキストボックスに移動します。