C# .Net AccessKeyPressed事件以修改按钮行为

C# .Net AccessKeyPressed事件以修改按钮行为,c#,vb.net,winforms,event-handling,C#,Vb.net,Winforms,Event Handling,在VB.Net中,可以根据按钮的文本为其指定访问键。例如,当用户按下Alt+O时,“&Open”将使按钮单击 但是Alt键不是必需的,这对我来说是个问题。如果用户按下“O”,我不希望打开按钮点击 基于,似乎我可以使用AccessKeyPressedEvent,但我没有任何运气 这是我的代码,在一个简单的测试应用程序中,有两个名为“&AClick”和“&BClick”的按钮 我从未看到messagebox,也没有在按下CustOnAccess键时遇到断点 我的场景是一个具有数百个屏幕的VB.NET

在VB.Net中,可以根据按钮的文本为其指定访问键。例如,当用户按下Alt+O时,“&Open”将使按钮单击

但是Alt键不是必需的,这对我来说是个问题。如果用户按下“O”,我不希望打开按钮点击

基于,似乎我可以使用AccessKeyPressedEvent,但我没有任何运气

这是我的代码,在一个简单的测试应用程序中,有两个名为“&AClick”和“&BClick”的按钮

我从未看到messagebox,也没有在按下CustOnAccess键时遇到断点

我的场景是一个具有数百个屏幕的VB.NET4.0应用程序。我有一个中心位置,可以在打开时向按钮或窗体本身添加事件处理程序。我不想更改每个屏幕上现有的单击事件


编辑:C#Net Windows窗体应用程序中的相同(缺少)结果:

    public Form1()
    {
        InitializeComponent();
        EventManager.RegisterClassHandler(typeof(UIElement), AccessKeyManager.AccessKeyPressedEvent, new AccessKeyPressedEventHandler(OnAccessKeyPressed));
    }

    private static void OnAccessKeyPressed(object sender, AccessKeyPressedEventArgs e)
    {
        MessageBox.Show("OnAccessKeyPressed");      
    }

这是可以解决的,但“数百个屏幕”的场景使大多数解决方案都无法接受。你需要解释一下,你引爆了什么样的炸弹,突然让数百个屏幕出现了问题。当然有更好的方法避免点燃炸弹的导火索。同意-我正在寻找一个集中的解决方案,而不是一个需要改变每个屏幕或按钮的解决方案。这是一个VB.Net应用程序,我有一种方法可以在屏幕上的每个按钮打开时添加处理程序。如果上面的测试场景有效,它将很容易扩展到实际的应用程序。这是可以解决的,但“数百屏幕”场景使大多数解决方案都不可接受。你需要解释一下,你引爆了什么样的炸弹,突然让数百个屏幕出现了问题。当然有更好的方法避免点燃炸弹的导火索。同意-我正在寻找一个集中的解决方案,而不是一个需要改变每个屏幕或按钮的解决方案。这是一个VB.Net应用程序,我有一种方法可以在屏幕上的每个按钮打开时添加处理程序。如果上面的测试场景有效,它将很容易扩展到实际的应用程序。
    public Form1()
    {
        InitializeComponent();
        EventManager.RegisterClassHandler(typeof(UIElement), AccessKeyManager.AccessKeyPressedEvent, new AccessKeyPressedEventHandler(OnAccessKeyPressed));
    }

    private static void OnAccessKeyPressed(object sender, AccessKeyPressedEventArgs e)
    {
        MessageBox.Show("OnAccessKeyPressed");      
    }