編集:私はちょうどこの質問は、「ユニバーサルアプリ」についてだったことに気づいたが、この例では、WinFormsのためですが、それは、ユニバーサルまたはUWPのアプリケーションのための答えを見つけるために役立つかもしれません...
転送(void NavigateBack(object sender, EventArgs e)
)すでに後方移動するためのボタン上の2つのイベントハンドラを持っていると仮定し、(void NavigateForward(object sender, EventArgs e)
)
まず自分のフォームのコードにこのスニペットを追加します。
private void HandlePreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
switch (e.KeyCode)
{
case Keys.XButton1:
NavigateBack(sender, e); // call the back button event handler
break;
case Keys.XButton2:
NavigateForward(sender, e); // call the forward button event handler
break;
}
}
private void HandleMouseDown(object sender, MouseEventArgs e)
{
switch (e.Button)
{
case MouseButtons.XButton1:
NavigateBack(sender, e); // call the back button event handler
break;
case MouseButtons.XButton2:
NavigateForward(sender, e); // call the forward button event handler
break;
}
}
次に、デザイナービューに移動し、フォームのすべての主要なコントロールを実行し、PreviewKeyDownイベントとMouseDownイベントを対応するメソッドに関連付けます。
private void HookupNavigationButtons(Control ctrl)
{
for (int t = ctrl.Controls.Count - 1; t >= 0; t--)
{
Control c = ctrl.Controls[t];
c.PreviewKeyDown -= HandlePreviewKeyDown;
c.PreviewKeyDown += HandlePreviewKeyDown;
c.MouseDown -= HandleMouseDown;
c.MouseDown += HandleMouseDown;
HookupNavigationButtons(c);
}
}
そして、あなたはマウスだけをしたい場合はHookupNavigationButtons(this);
でInitializeComponent();
後にどこかでそのメソッドを呼び出します。
より良い(将来性)の方法は、再帰的にこのようなイベントをフックアップするコードを記述することですあなたはキーボードのものを残すことができますが、そこにはこれらのナビゲーションボタンもあるキーボードがいくつかあります。
回答とリンクをありがとうございます。残念ながら、リンクはUWPアプリ用で、私はコードを "back request"ハンドラを取得しようとしましたが、8.1アプリでは利用できません。 – zachboy82