写了一个自定义控件,当中写有多个this.Invalidate(),有网友说是写了多个this.Invalidate()导致的,
但是我在同一个解决方案中添加一个form,在代码中写OnPaint的重载,发现有执行;
由于项目太大,使用了好几种排除法,依然找不出问题出在哪里;
于是来这边问各位前辈,不晓得一般有哪几种情况会导致OnPaint不执行的,谢谢指教!!!
9 个解决方案
#1

#2

#3
开一个线程,隔一秒执行一次 this.Invalidate()
#4
谢谢,我试试
#5
没有效果,依然不执行OnPaint函数
#6
你看是不是某个地方重写了 ,WndProc,在那里面有可能会把重汇的消息给block了。
#7
搜索了整个解决方案,没有找到WndProc
#8
那再问一句,你写的这个自定义的控件的基类型是什么啊? 某些控件不会调用OnPaint
例如 TextBox, ComboBox
这些空间要调用类似于OnPaint的方法就需要 重新 WndProc 捕获 message值 0x0085 的那个,在那个时候进行重汇。
例如 TextBox, ComboBox
这些空间要调用类似于OnPaint的方法就需要 重新 WndProc 捕获 message值 0x0085 的那个,在那个时候进行重汇。
#9
谢谢,基类型是UserControl
#1

#2

#3
开一个线程,隔一秒执行一次 this.Invalidate()
#4
谢谢,我试试
#5
没有效果,依然不执行OnPaint函数
#6
你看是不是某个地方重写了 ,WndProc,在那里面有可能会把重汇的消息给block了。
#7
搜索了整个解决方案,没有找到WndProc
#8
那再问一句,你写的这个自定义的控件的基类型是什么啊? 某些控件不会调用OnPaint
例如 TextBox, ComboBox
这些空间要调用类似于OnPaint的方法就需要 重新 WndProc 捕获 message值 0x0085 的那个,在那个时候进行重汇。
例如 TextBox, ComboBox
这些空间要调用类似于OnPaint的方法就需要 重新 WndProc 捕获 message值 0x0085 的那个,在那个时候进行重汇。
#9
谢谢,基类型是UserControl