Alt键导致表单重绘

Gav*_*vin 2 c# repaint winforms

我遇到了一个问题,我希望你们中的一个好思想家能够克服......

出于某种原因,一旦我加载了我的Windows窗体,如果用户按下该Alt键,表单将重绘,从而导致闪存.

这只会在第一次发生,因此任何后续Alt按键都不会发生任何事情.

我没有处理按键的任何菜单条或事件,所以我只能假设它是我没有设置的设置,或者是我在不知不觉中设置的设置.

仅供参考,表单在构造函数中执行以下操作

DoubleBuffered = true;
SetStyle(ControlStyles.OptimizedDoubleBuffer | 
         ControlStyles.AllPaintingInWmPaint, true);
Run Code Online (Sandbox Code Playgroud)

这是因为我有许多面板和标签也是如此,以实现透明度.

手指交叉,其中一个你会知道为什么;)

Han*_*ant 8

将此代码粘贴到您的表单中:

    protected override void WndProc(ref Message m) {
        // Suppress the WM_UPDATEUISTATE message
        if (m.Msg == 0x128) return;
        base.WndProc(ref m);
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试它时,它很好地抑制了油漆.Windows中的焦点提示处理相当奇怪,请进行彻底测试以确保没有意外的副作用.