[英]C# WinForms how to stop Ding sound in TreeView
如果在TreeView的keydown事件中打开任何模态对话框(或者如果焦点在TreeView上,则在KeyPreview = true的表单中),您将听到恼人的DING!
我该如何防止它发生?
这个ding通常是一个没有处理键事件的信号(比如,默认情况下TextBox会为Ctrl + A等)。 但是,设置e.Handled或e.SuppressKeyPress对于TreeView中的模式对话框没有帮助。 除了打开模态对话框之外,它在执行任何操作时都有帮助!
当您在其中一个事件中抽取消息循环时,本机Windows树视图控件会变得非常难以理解。 标准解决方案是延迟事件的处理,直到所有事件都完成。 使用Control.BeginInvoke()方法很容易。 也适用于这种情况:
private void treeView1_KeyDown(object sender, KeyEventArgs e) {
e.Handled = e.SuppressKeyPress = true;
this.BeginInvoke(new Action(() =>
(new Form1()).ShowDialog()
));
}
使用ProcessCmdKey捕获击键对我有用 。 覆盖表单的此方法:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.O | Keys.Control))
{
openFileDialog1.ShowDialog();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
返回true表示按键被表单占用并停止进一步处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.