C# WinForms 如何在 TreeView 中停止叮叮声

Ist*_*tel 3 c# treeview keydown winforms

如果您在 TreeView 的 keydown 事件中打开任何模式对话框(或者在 KeyPreview=true 的表单中,如果焦点位于 TreeView 上),您将听到烦人的 DING 声!

我该如何防止它发生?

此叮声通常是按键事件未处理的信号(例如,默认情况下 TextBox 会因 Ctrl+A 等而发出叮声)。但是,设置 e.Handled 或 e.SuppressKeyPress 对于 TreeView 中的模式对话框没有帮助。除了打开模式对话框之外,它在执行任何操作时都会有所帮助!

Han*_*ant 8

当您在其中一个事件中注入消息循环时,本机 Windows 树视图控件会变得非常暴躁。标准的解决方案是延迟事件的处理,直到所有事件都完成。使用 Control.BeginInvoke() 方法可以轻松完成。在这种情况下也起作用:

    private void treeView1_KeyDown(object sender, KeyEventArgs e) {
        e.Handled = e.SuppressKeyPress = true;
        this.BeginInvoke(new Action(() => 
            (new Form1()).ShowDialog()
        ));
    }
Run Code Online (Sandbox Code Playgroud)