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

本文探讨了在Windows窗体应用中,ComboBox控件导致焦点抢占的问题及其解决策略。通过使用this.ActiveControl=null;语句恢复焦点切换,作者分享了经验教训和对技术深度学习的反思。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.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,和其他一些现在看来巨大的东西的来龙去脉,不再有这些恐慌。做个受人尊敬的,能解决问题的工程师。但是要先搞清楚自己的目标,是要成为一个能工巧匠,还是别的什么角色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值