Alt键导致表单重绘

时间:2012-01-13 09:14:43

标签: c# winforms repaint

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

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

这仅在第一次发生,因此任何后续按下 Alt 键都不会执行任何操作。

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

仅供参考,表单在构造函数

中执行以下操作
DoubleBuffered = true;
SetStyle(ControlStyles.OptimizedDoubleBuffer | 
         ControlStyles.AllPaintingInWmPaint, true);

这是因为我有许多面板和标签也可以实现透明度。

手指交叉,其中一个人会知道原因;)

1 个答案:

答案 0 :(得分:8)

将此代码粘贴到表单中:

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

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