随时显示热键

Bub*_*d86 4 c# windows visual-studio

是否可以使我的控件上的下划线热键始终可见,而无需使用Visual Studio - C#在Windows窗体中按Alt键?

我只有一段时间需要表单的控件总是用字符下面的"_"加下划线.所以只需要代码就可以了.

我可以让Windows的设置始终显示快捷键和热键的下划线,但我只需要它发生一段时间.

Dav*_*nan 9

假设您正在使用WinForms,您应该能够依赖底层的Win32机制.这就是WM_UPDATEUISTATE信息.文件说:

应用程序发送WM_UPDATEUISTATE消息以更改指定窗口及其所有子窗口的UI状态.

因此,您可以将消息发送到顶级窗口的句柄.你需要传递UIS_CLEAR低阶词wParamUISF_HIDEACCEL高阶词wParam.

这是一些相当粗略的示例代码.请记住,我的C#专业知识非常有限.

public partial class Form1 : Form
{
    private const uint WM_UPDATEUISTATE = 0x0128;
    private const uint WM_QUERYUISTATE = 0x0129;
    private const uint UIS_CLEAR = 2;
    private const uint UISF_HIDEACCEL = 0x2;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_HandleCreated(object sender, PaintEventArgs e)
    {
        ClearHideAccel();
    }

    private void ClearHideAccel()
    {
        UIntPtr wParam = (UIntPtr)((UISF_HIDEACCEL << 16) | UIS_CLEAR);
        NativeMethods.SendMessage(this.Handle, WM_UPDATEUISTATE, wParam, IntPtr.Zero);
    }
}

internal class NativeMethods
{
    [DllImport("User32", SetLastError = true)]
    public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, UIntPtr wParam, IntPtr lParam);
}
Run Code Online (Sandbox Code Playgroud)