編輯:我只注意到這個問題是關於「通用應用程序」,這個例子是的WinForms,但它可以用於查找通用或UWP應用答案是有幫助...
假設你已經有按鍵兩個事件處理程序,以向後導航(void NavigateBack(object sender, EventArgs e)
)和遠期(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);
}
}
而且InitializeComponent();
後某處調用該方法與HookupNavigationButtons(this);
如果你只想要鼠標事件你可以忽略鍵盤的東西,但有幾個鍵盤也有這些導航按鈕。
謝謝你的答案和鏈接。不幸的是,這個鏈接是針對UWP應用程序的,我嘗試了代碼來獲取「後臺請求」處理程序,但它不適用於8.1應用程序。 – zachboy82