Gav*_*vin 2 c# repaint winforms
我遇到了一个问题,我希望你们中的一个好思想家能够克服......
出于某种原因,一旦我加载了我的Windows窗体,如果用户按下该Alt键,表单将重绘,从而导致闪存.
这只会在第一次发生,因此任何后续Alt按键都不会发生任何事情.
我没有处理按键的任何菜单条或事件,所以我只能假设它是我没有设置的设置,或者是我在不知不觉中设置的设置.
仅供参考,表单在构造函数中执行以下操作
DoubleBuffered = true;
SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint, true);
Run Code Online (Sandbox Code Playgroud)
这是因为我有许多面板和标签也是如此,以实现透明度.
手指交叉,其中一个你会知道为什么;)
将此代码粘贴到您的表单中:
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中的焦点提示处理相当奇怪,请进行彻底测试以确保没有意外的副作用.