C# 始终显示热键
使用Visual Studio-C#可以使下划线热键在控件上始终可见,而不必在Windows窗体中按Alt键 我只有在某个特定的时间需要表单的控件在字符下始终加上“u”下划线。因此,只要有代码就好了C# 始终显示热键,c#,windows,visual-studio,C#,Windows,Visual Studio,使用Visual Studio-C#可以使下划线热键在控件上始终可见,而不必在Windows窗体中按Alt键 我只有在某个特定的时间需要表单的控件在字符下始终加上“u”下划线。因此,只要有代码就好了 我可以将Windows设置为始终显示快捷键和热键的下划线,但我只需要在特定时间进行设置 假设您使用的是WinForms,您应该能够依赖底层Win32机制。这就是信息。文件说: 应用程序发送WM_UPDATEUISTATE消息以更改指定窗口及其所有子窗口的UI状态 因此,您可以将消息发送到顶级窗口的句
我可以将Windows设置为始终显示快捷键和热键的下划线,但我只需要在特定时间进行设置 假设您使用的是WinForms,您应该能够依赖底层Win32机制。这就是信息。文件说: 应用程序发送WM_UPDATEUISTATE消息以更改指定窗口及其所有子窗口的UI状态 因此,您可以将消息发送到顶级窗口的句柄。对于
wParam
的低阶单词,需要传递UIS\u CLEAR
;对于wParam
的高阶单词,需要传递UISF\u hideacel
下面是一些相当粗糙的示例代码。请记住,我的专业知识非常有限
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);
}
公共部分类表单1:表单
{
私有consuint WM_UPDATEUISTATE=0x0128;
私人建筑WM_Queryistate=0x0129;
私人建筑用户界面清晰=2;
私有const uist UISF_hideacel=0x2;
公共表格1()
{
初始化组件();
}
私有void Form1\u HandleCreated(对象发送方,PaintEventArgs e)
{
ClearHideacel();
}
私有无效ClearHideAcel()
{
uintpttr wParam=(uintpttr)((UISF_hideacel)您只需要对SendMessage进行一次pinvoke调用。您熟悉pinvoke和SendMessage吗。