最近MSDN回答一个问题——说如果在TextBox中键入字符,需要智能感知出列表,同时对不存在的单词(没有出现智能感知的)自动显示“Not Found”。

  首先想到的是利用TextBox的AutoComplete功能。该功能允许你设置不同形式的AutoComplete智能感知,譬如:

 1)AutoCompleteSource:设置感知源头类型(这里是CustomSource)。

   2)AutoCompleteMode:设置感知的模式(输入不存在的字符追加,不追加还是同时存在,这里显然不追加)。

       3)AutoCompleteCustomSource:设置源头数据(AutoCompleteSource必须是CustomSource)。

  接下来思考如何在输入第一个字符的时候判断是否被感知到,如果没有则显示文本。

  拖拽一个Label到窗体上,然后在TextBox的KeyUp事件中对数据源进行判断(为了方便,直接先把数据源数据转化成Array的形式然后使用扩展方法Any进行判断),同时为了防止界面卡死,使用异步,代码如下(VB.NET):

Public Class Form1Dim collection As New AutoCompleteStringCollectionPrivate ReadOnly arrayCollection() As String = {"a"}Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadEnd SubPublic Sub New()InitializeComponent()collection.AddRange(New String() {"apple", "aero", "banana"})TextBox1.AutoCompleteCustomSource = collectionReDim arrayCollection(collection.Count - 1)collection.CopyTo(arrayCollection, 0)End Sub''' <summary>''' When release the keys, plz start a background thread to handle the problem''' </summary>Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUpDim act As New Action(Sub()'Check whether there are any values inside the collection or notIf (TextBox1.Text = "") OrElse (arrayCollection.Any(Function(s)Return s.StartsWith(TextBox1.Text)End Function)) ThenLabel1.BeginInvoke(New MethodInvoker(Sub()Label1.Text = String.EmptyEnd Sub))ElseLabel1.BeginInvoke(New MethodInvoker(Sub()Label1.Text = "Not found"End Sub))End IfEnd Sub)act.BeginInvoke(Nothing, Nothing)End Sub
End Class

这里有一些注意点:

 1)异步的异常不会抛出(因为异步的本质是CLR内部的线程),只能调试时候看到。因此编写异步程序必须万分小心。

 2)VB.NET定义数组(譬如定义String(5)的数组,其实长度是6(从0~5)包含“5”自身,因此数组复制(Redim重定义大小)的时候必须Count-1,否则重新定义的数组会多出一个来,默认是Nothing,会导致异步线程出现异常)。

转载于:https://www.cnblogs.com/ServiceboyNew/archive/2013/04/30/3051772.html

TextBox的智能感知相关推荐

  1. 如何彻底禁用VS 2008的智能感知功能

    作者:朱金灿 来源:http://blog.csdn.net/clever101 现在发现VS 2008的智能感知做得真是烂得一坨.使用VS2008或者2005时候,当切换配置,总是显示"正 ...

  2. 用txt做数据源和winfrom textbox输入智能提示

    1.用txt做数据源连接字符串 //text作为数据源的链接字符串             string strConnection = @"Provider=Microsoft.Jet.O ...

  3. VS2010没有Intellisense(智能感知)的解决办法

    为什么80%的码农都做不了架构师?>>>    Visual Studio 2010 的Intellisense是依赖于Microsoft SQL Server Compact 3. ...

  4. VS2010与.NET4系列 20.VS2010的JavaScript智能感知增强

    今天介绍VS2010和VWD2010 Express对JavaScript智能感知方面的一些改进.你会发现 VS2010 的 JavaScript 智能感知加载大的脚本文件和使用大的库更加迅速了,它现 ...

  5. 在Visual Studio中启用对jquery等javascript框架的智能感知

    http://www.cnblogs.com/tonybinlj/archive/2009/05/26/1490434.html 启用Visual Studio 对jQuery的智能感知 首先看一下V ...

  6. 启用Visual Studio 对jQuery的智能感知

    启用Visual Studio 对jQuery的智能感知 首先看一下Visual Studio带给我们的智能感知惊喜. 要让Visual Studio支持智能感知, 需要下列条件: 安装 VS2008 ...

  7. 如何为javascript代码编写注释以支持智能感知

    在使用Visual Studio做开发的时候,智能感知是非常方便的.从VS2008开始,提供了对javascript的智能感知支持.例如 上述代码中,我们先用document对象的getElement ...

  8. 【数据竞赛】2020首届海洋目标智能感知国际挑战赛冠军方案分享

    作者:欧奕旻.左育莘.杨锐 赛事回顾 2020年12月22日由中国造船工程学会等单位主办,哈尔滨工程大学承办,武汉理工大学协办的首届"海洋目标智能感知国际挑战赛"落下帷幕.秉承 & ...

  9. vs2005 智能感知不正常的解决办法

    vs2005 自动提示(智能感知)不出现或者闪一下就消失的解决办法 早上的时候,我的vs智能感知不正常了,不是不出现,而是一闪就没有了.以为是pd12插件搞的鬼,卸载了pd也不行,折腾了半天也没用,最 ...

最新文章

  1. 这可能是近 2 年进京东的最好机会!
  2. Resin install document
  3. java中定时任务和线程池_java基于线程池和反射机制实现定时任务完整实例
  4. 浅析Java各种变量线程安全问题
  5. 08_添加图例、添加标题(Adding a Title)
  6. Fluid 0.5 版本:开启数据集缓存在线弹性扩缩容之路
  7. virtualbox 创建桥接网络_VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通(图文教程)...
  8. Nexys4DDR的DDR2读写操作例程详解
  9. ICE第三篇------一些疑难点
  10. 七种常见的核酸序列蛋白编码能力预测工具 | ncRNAs | lncRNA
  11. SharePoint 2010多语言包的安装
  12. Flutter学习记录-关于一些常见实现
  13. 基建管控系统_催生智慧园区三维管控系统解决方案,新基建背景下构建可视化监控平台...
  14. 剑指offer(C++)-JZ33:二叉搜索树的后序遍历序列(数据结构-树)
  15. sap 双计量单位_[原创]浅谈MM模块的双计量单位(二)
  16. 中止执行后超过2年_10年后超过美国!汪涛:中国GDP将达到28万亿美元
  17. 网线 - RJ45接口线序
  18. cad怎么画立体图形教学_立体图形怎么画步骤 找CAD图形中心点的方法步骤图
  19. 脸谱网下载_脸谱网对AR眼镜大胆愿景的最大障碍是信任
  20. 一个屌丝程序猿的人生(二十二)

热门文章

  1. 在线聊天javascript代码
  2. 学习SQLSERVER2005高可用性数据库镜像的一些心得
  3. linux c socket通信
  4. 【感想文】感情经历,是否给你我带来的些许提升?我想,有。
  5. HoloLens开发手记- SpectatorView for iOS编译指南
  6. python面向对象编程类的成员总结
  7. bzoj 3209: 花神的数论题
  8. Android自动化测试(UiAutomator)简要介绍
  9. 第一个 Metro程序(空白应用程序)
  10. 抽象类和接口的关系之我的图解(转自Jack Fan)