工作学习笔记——comboBox抢占焦点问题,以及工作学习的想法

  .Net快速开发很便利,但有时总会碰到一些不痛不痒的小问题,让人无从下手解决。比如这个断断续续折磨了我好几天的comboBox抢占焦点问题。

  窗体上有一个comboBox,还有一些其他控件也需要接收键盘输入。在没有操作comboBox之前,一切都是正常的,键盘事件流到了我预设的窗体按键事件处理函数里。但是,只要操作了comboBox,似乎它以后就独占了输入焦点,无论是窗体还是其它控件,都无法再接到按键事件。

  我尝试了一些方法,包括使用窗体的KeyPreview、WndProc处理函数,使用focus()将焦点设给其他控件等,总是不能完美解决。感到可能和win form的UI消息传递机制有关,在MSDN上看了一些文章又言之泛泛,深入一些的介绍不知道去哪里找。直到我换了几个英文搜索关键词,在stackoverflow上扫到了这个帖子上的一条语句


 "this.ActiveControl = null;


  一切恢复了正常,只是我仍然云里雾里,不能确切知道这条语句背后的道理。

  

  这次艰辛的解决问题的过程让我有了一些想法:

1.stackoverflow真是个好网站,好多问题在它上面都有明确清晰的答案(别处还找不到另外靠谱的)。只是我们要习惯多用google,多用英文搜索词。其实对于程序员来说,这并不困难,控件名称、函数名称、错误关键字,这些英文关键字都是我们平时工作中不得不面对的。


2.多尝试、多想方法,不要在一条路上耗费太多时间。在写这篇文章的时候,我又想到可以放几个文本框到窗体上,看看和comboBox并存时,焦点能不能切换。常理告诉我们,应该是可以的。这起码会引出另外一些思路。


3.要想用好一样东西真是很难,尤其是规模大到windows这种程度。我可以说,用一两年时间精通了BREW技术,知其然也知其所以然。但是windows,恐怕需要3~5年。刚工作的时候,可以有大把的时间学习钻研。但是几年之后,当你肩上的担子越来越重,而面对的问题的规模的增长速度,超出了能力的增长速度,又该如何是好呢?我现在的状况是,很多问题,都需要靠互联网搜索来解决。而网上的答案,很多时候只是一时一地的办法,并不能让你明白背后的道理。


4.我现在工作中处理的问题,很多前人已经处理过了。我们要花多少精力来重走别人走过的路,要不要抄捷径,什么时候可以走自己的路。


5.如果真的想钻研技术,再过个3~5年,我想我也可以了解windows,和其他一些现在看来巨大的东西的来龙去脉,不再有这些恐慌。做个受人尊敬的,能解决问题的工程师。但是要先搞清楚自己的目标,是要成为一个能工巧匠,还是别的什么角色。

你可能感兴趣的:(工作,windows,互联网,Google,null,brew)