在所有时间显示热键

是否可以使下划线热键总是可见的我的控制,而不必按下Windows窗体中的Alt键与Visual Studio中 – C#中?

我只有一定的时间需要在表格的控件上总是用一个字符下的“_”来加下划线。 所以最好只有代码才能做到这一点。

我可以让Windows的设置始终显示快捷键和热键的下划线,但是我只需要在某个时间发生。

Solutions Collecting From Web of "在所有时间显示热键"

假设你正在使用WinForms,你应该能够依靠底层的Win32机制。 这就是WM_UPDATEUISTATE消息。 该文件说:

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

所以你可以把消息发送到顶层窗口的句柄。 对于wParam的高位字,您需要将wParam的低位字和UISF_HIDEACCEL的低位字传递给UIS_CLEAR

这里是一些相当粗糙的示例代码。 请记住,我的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); }