我做了一个自定义控件,它的容器是一个Panel,有纵向滚动条。发现只要更新自定义控件Label的Text属性,控件会自动获取焦点(不太确定这一点),导致这时如果想滚动到其它控件的位置时,滚动条视图会被自动拉回到被更新的Label的位置。
这个更新Label的操作很频繁,是更新进度的。
这种情况的发生还有另一个条件,就是只有这个控件被左单击,左双击,中键击,中键双击,右击,右双击时才会出现这种情况,感觉像是跟焦点有关系,但在更新Label后把焦点置在Form或其它控件上时,根本没有效果。
我曾试过拦截WM_LBUTTONDOWN等鼠标击消息,拦截到后不让它处理确实没有这个问题了,但控件需要滚轮操作,而且还有上下文菜单,没法把这些鼠标事件都过滤掉,过滤掉后有些操作自已实现就太复杂了。
所以现象就是鼠标击中了某个需要刷新Label的控件后,这一行就会一直把显示区拉到它的位置,除非鼠标击中了另一行,否则滚动条无法正常滚动到其它行位置。
是否有什么需要释放焦点的API或者方法啊?
大神们帮忙啊?