私はこれをしたいです。私のフォームの矢印キーのように、4 つのボタンがあります。左のボタンを押したとき、本当の左矢印キーと同じことをしたいです。そのように、4つのボタンすべてを実行したいのです。KeyEven関数についてだけ検索したところ、自己学習しています。どんな助けでも大歓迎です。
ありがとう。
私はこれをしたいです。私のフォームの矢印キーのように、4 つのボタンがあります。左のボタンを押したとき、本当の左矢印キーと同じことをしたいです。そのように、4つのボタンすべてを実行したいのです。KeyEven関数についてだけ検索したところ、自己学習しています。どんな助けでも大歓迎です。
ありがとう。
MSDN の記事から:
TAB、RETURN、ESC、および矢印キーなどの一部のキーの押下は、入力キーの押下と見なされないため、一部のコントロールでは通常無視されます。たとえば、デフォルトでは、Button コントロールは矢印キーを無視します。通常、矢印キーを押すと、フォーカスが前または次のコントロールに移動します。矢印キーはナビゲーション キーと見なされ、通常、これらのキーを押しても、Button の KeyDown イベントは発生しません。ただし、Button の矢印キーを押すと、PreviewKeyDown イベントが発生します。Button の PreviewKeyDown イベントを処理し、IsInputKey プロパティを true に設定すると、矢印キーが押されたときに KeyDown イベントを発生させることができます。ただし、矢印キーを操作すると、フォーカスが前または次のコントロールに移動しなくなります。
そこで見つけたコードを引用します。私はそれをテストしていません
public Form1()
{
InitializeComponent();
// Form that has a button on it
button1.PreviewKeyDown +=new PreviewKeyDownEventHandler(button1_PreviewKeyDown);
button1.KeyDown += new KeyEventHandler(button1_KeyDown);
button1.ContextMenuStrip = new ContextMenuStrip();
// Add items to ContextMenuStrip
button1.ContextMenuStrip.Items.Add("One");
button1.ContextMenuStrip.Items.Add("Two");
button1.ContextMenuStrip.Items.Add("Three");
}
// By default, KeyDown does not fire for the ARROW keys
void button1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Down:
case Keys.Up:
if (button1.ContextMenuStrip != null)
{
button1.ContextMenuStrip.Show(button1,
new Point(0, button1.Height), ToolStripDropDownDirection.BelowRight);
}
break;
}
}
// PreviewKeyDown is where you preview the key.
// Do not put any logic here, instead use the
// KeyDown event after setting IsInputKey to true.
private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Down:
case Keys.Up:
e.IsInputKey = true;
break;
}
}
ここにリンクがありますhttp://msdn.microsoft.com/en-us/library/system.windows.forms.control.previewkeydown.aspx
これがお役に立てば幸いです。