通过在按钮的文本属性中的热键字符前添加 &
,可以很容易地为 Windows 窗体按钮设置 Alt 热键。
现在,我需要创建一个包含大约 50 个按钮的控件(不要问),并且希望为每个按钮设置一个热键,利用 Ctrl 热键以及 < kbd>Alt 热键。此外,希望 Ctrl 热键模仿 Alt 热键行为,因为当您按下 Ctrl 按钮时,下划线将出现在指示热键的按钮。
我可以捕获关键事件并尝试模仿行为,但有没有更直接的方法来做到这一点?可能不是问题,但还需要根据存储在数据库中的定义以编程方式生成按钮。
编辑: 进一步解释这个问题,问题不仅在于捕获命令键,而且实际上能够捕获控制键,然后能够改变按钮中的显示向用户显示该按钮的控制热键是什么。
下面是在控制级别捕获命令键和控制键的一些简介(尽管看起来还需要一些技巧才能让 OnKeyDown
触发):
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.Control)
{
// Show the hotkey on the buttons with ctrl hotkeys
}
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.Control | Keys.C:
// Execute the Ctrl + C button action
btnControl_Click(this, null);
return true;
default:
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
在控件级别,是否可以更改按钮显示以模仿热键行为以显示下划线?看起来您不能将格式设置到按钮的 Text 属性中。
控制级别的方法也有更多问题,因为按钮是在运行时动态生成的。理想的是能够为按钮分配 Alt 或 Ctrl 热键。我想我可以扩展按钮控件以添加控件热键行为。似乎应该有更直接的方法。
最佳答案
没有一种方法像使用“&”一样简单,但是 Building Keyboard Accelerators into .NET Windows Forms Applications 很好地解释了如何去做。
关于c# - 将 Ctrl 热键绑定(bind)到 Windows 窗体按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315542/