.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,和其他一些现在看来巨大的东西的来龙去脉,不再有这些恐慌。做个受人尊敬的,能解决问题的工程师。但是要先搞清楚自己的目标,是要成为一个能工巧匠,还是别的什么角色。
分享到:
相关推荐
### WPF学习笔记——主流桌面应用开发技术 #### 一、WPF简介 **Windows Presentation Foundation (WPF)** 是微软推出的下一代图形用户界面系统,它主要用于构建具备卓越视觉体验的Windows客户端应用程序。WPF不仅...
本篇学习笔记将深入探讨EXTJS中ComboBox的联动效果,即一个ComboBox的选择会触发另一个ComboBox的数据更新,以此来提供更丰富的交互体验。通过源码解析和工具应用,我们将了解如何构建和实现这种联动效果。 ...
### ComboBox 数据绑定问题详解 #### 一、概述 在.NET框架下的Windows Forms应用程序开发中,`ComboBox` 控件是非常常用的一个控件,主要用于提供给用户一个下拉列表以供选择。`ComboBox` 控件的数据绑定功能是其...
8. **样例代码**:在CustomControls文件夹中,可能包含了实现上述功能的源代码,包括自定义ComboBox类的定义、颜色列表的管理以及与UI交互的逻辑。通过阅读和分析这些代码,你可以了解具体的实现细节。 综上所述,...
在本文中,我们将深入探讨如何在Qt环境中使用QML实现一个自定义的ComboBox组件。ComboBox在用户界面设计中是一个常见的控件,它提供了一个下拉列表供用户选择,通常用于有限的选项展示。通过自定义ComboBox,我们...
在本例中,我们将深入探讨ComboBox的基本使用方法,包括其创建、数据填充、事件处理以及样式设置。 1. 创建ComboBox控件 在Windows Forms或WPF应用程序中,可以使用设计工具(如Visual Studio)直接从工具箱拖拽...
本篇文章将深入探讨C# WinForm中的一个重要控件——ComboBox组合框控件,它在用户界面设计中起着至关重要的作用。 ComboBox控件结合了文本输入框和下拉列表的功能,用户既可以手动输入文本,也可以从预设的选项列表...
学习笔记部分则是作者在实践过程中对每个例子的思考与总结,包含了关键知识点的解析、代码逻辑的解读以及可能遇到的问题和解决方案。这不仅能够帮助读者快速理解和复现例子,还能引导他们养成良好的编程习惯和问题...
首先,我们要理解Combobox的工作原理。Combobox通常有两种模式:简单模式和下拉模式。在简单模式下,Combobox只显示一个固定的文本项;而在下拉模式下,用户可以点击按钮展开下拉列表,从中选择一个项目。当窗口大小...
在使用ComboBox控件时,有时我们可能遇到一个棘手的问题,即无法隐藏fieldLabel。这个问题在许多应用程序开发中都可能出现,特别是在使用特定框架或者库时。ComboBox是一个常用的UI组件,通常用于提供下拉选择列表,...
压缩包中的“ComboBox”文件,如果是一个代码库或库文件,可能包含了实现ComboBox功能的类库或模块,可以直接引入到项目中使用,简化开发工作。 综上所述,ComboBox是一个多功能且常用的控件,其API和示例文档为...
总的来说,自定义ComboBox以显示TreeView是一项复杂的任务,需要深入理解和熟练掌握UI控件的工作原理,以及事件处理和数据绑定机制。通过不断地测试和优化,可以创建出既实用又美观的自定义控件,提高应用程序的用户...
修改上一个资源版本中结束编辑时combobox显示问题. 1、类型为combogrid时每行的参数不同查询返回对应的数据结果。 2、类型为combobox时,输入框显示图标按钮,实现对应的事件。 3、解决类型为combobox显示为value而...
Extjs4开发笔记(一)——准备工作 关于Extjs4开发笔记(二)的补充说明 在Extjs4应用中使用Ext.Loader ======================================= 11条jquery常用技巧和方法整理列表 8个超棒的学习jQuery的网站 ...
在C# WinForms开发中,ComboBox控件是一个常用的组件,用于提供下拉列表供用户选择。然而,有时候我们可能需要自定义ComboBox...通过学习和实践这些知识点,你可以创建出功能丰富且符合设计需求的自定义ComboBox控件。
首先,`comboBox`的基本用法包括添加项目、设置默认选中项以及处理用户的选择。在C#中,你可以使用`Items`属性来添加或删除选项。例如: ```csharp comboBox1.Items.Add("Option1"); comboBox1.Items.Add("Option2...
在Windows Forms应用程序中,ComboBox控件是常用的交互元素,它允许用户从一组预定义的选项中选择一个。在某些情况下,我们可能希望实现ComboBox的模糊查询功能,这使得用户可以通过输入部分文本快速查找并选择所需...
在.NET Framework中,C#是一种常用的编程语言,用于构建Windows桌面应用程序、Web应用程序以及移动应用程序。自定义控件是C#编程中一个重要的概念,它允许开发者根据需求扩展或修改内置控件的功能和外观,以满足特定...
通过学习和实践这些步骤,你将能够熟练地自定义ComboBox的外观,实现独特的设计效果。 总结来说,ComboBox自绘是Windows编程中的一项进阶技巧,它允许开发者完全掌控控件的视觉表现,从而实现更加丰富和个性化的...
ComboBox控件可以输入文本也可以提供列表来选择项,而且还自带有属性来实现自动匹配,但是它有一个弊端,只能从头开始匹配,例如"张三丰",输入"三"或“三丰”是匹配不了。该自定义控件利用visual studio2017开发,...