我有一个带有单个文本框的表单.没有其他控制.每当我输入"Enter"键或"Esc"键时,表单就会按照我的意愿运行; 但我听到可怕的Windows错误声音.代码看起来类似于以下内容......
public class EntryForm: Form
{
public EntryForm()
{
}
private void EntryTextBox_KeyUp(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
// do some stuff
Hide(); // I've also used DialogResult = DialogResult.OK here
e.Handled = true;
}
else if(e.KeyCode == Keys.Escape)
{
Hide(); // I've also used DialogResult = DialogResult.Cancel here
e.Handled = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过将以下代码添加到窗体的构造函数来"破解"它并使噪声停止.
AcceptButton = new Button();
CancelButton = new Button();
Run Code Online (Sandbox Code Playgroud)
正如我所说,这导致声音无法发挥,但我认为这是不好的形式; 特别是因为我不需要表格上的按钮.
任何人都知道为什么这是行为,如果有更清晰的方法来阻止播放错误声音?
有一个更"正确"的修复程序,无论你有多少控件都可以使用,并遵循Windows窗体设计模型.将此代码粘贴到您的表单中:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == Keys.Escape || keyData == Keys.Enter) {
this.Hide();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6624 次 |
| 最近记录: |