【发布时间】:2010-03-18 19:53:19
【问题描述】:
我有一个对话框,其中包含文本框/等标签上的许多 Alt-Letter 快捷方式。此对话框可以以可编辑或只读模式显示数据。如果对话框处于只读模式,我收到了隐藏快捷方式下划线的请求。除了在运行时编辑标签文本(呃)还有什么办法可以删除它们?
如果您不知道 alt-Letter 快捷键指的是什么,请参阅this 问题。
【问题讨论】:
标签: c# winforms keyboard-shortcuts
我有一个对话框,其中包含文本框/等标签上的许多 Alt-Letter 快捷方式。此对话框可以以可编辑或只读模式显示数据。如果对话框处于只读模式,我收到了隐藏快捷方式下划线的请求。除了在运行时编辑标签文本(呃)还有什么办法可以删除它们?
如果您不知道 alt-Letter 快捷键指的是什么,请参阅this 问题。
【问题讨论】:
标签: c# winforms keyboard-shortcuts
您可以只迭代控件并删除与号。例如:
public partial class dlgSample : Form {
public dlgSample(bool isReadOnly) {
InitializeComponent();
if (isReadOnly) ZapMnemonics(this.Controls);
}
private void ZapMnemonics(Control.ControlCollection ctls) {
foreach (Control ctl in ctls) {
if (ctl is Label || ctl is Button) ctl.Text = ctl.Text.Replace("&", "");
ZapMnemonics(ctl.Controls);
}
}
}
【讨论】:
如果您更改 UseMnemonic 属性的值,则标签中会显示与号,因此我不确定您如何能够在不更改标签的情况下删除下划线。
【讨论】:
您可以尝试将表单的KeyPreview 属性设置为true,然后为表单的KeyDown 事件添加处理程序。如果按键是快捷键之一,则将KeyEventArgs 参数的Handled 属性设置为true。或者您可以将KeyEventArgs 变量的.SuppressKeyPress 属性设置为true。
您可以检查KeyEventArgs 变量的.Alt 属性以确保同时按下Alt 键。
【讨论】: