编辑:我只注意到这个问题是关于“通用应用程序”,这个例子是的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