自定义 StringTable 的自动完成功能 (C# API : SHAutoComplete)

原创 2004年10月30日 15:12:00

    首先请从 Code Project 上下载源代码,其中包含了大量的 API 调用,还有详细的说明和示例,并且可以生成 ShellLib.dll 直接在自己的程序中调用。

    源代码中介绍了如何使用 SHAutoComplete API,并演示了如何为 ComboBox 加入自定义的 StringTable,但没有说明如何为 TextBox 进行定义。其实这个功能经过少许的修改,就可以实现。

    下面的代码说明了以上的问题:

 public static void AutoComplete(System.Windows.Forms.TextBox textBox, string[] list)
 {
  // 定义并实例化 ShellAutoComplete 对象
  ShellAutoComplete ac = new ShellAutoComplete();
  // 绑定 TextBox 对象
  ac.EditHandle = textBox.Handle;
  // 设置自动完成选项
  ac.ACOptions = ShellAutoComplete.AutoCompleteOptions.None;
  ac.ACOptions |= ShellAutoComplete.AutoCompleteOptions.AutoSuggest;
  ac.ACOptions |= ShellAutoComplete.AutoCompleteOptions.AutoAppend;
  ac.ACOptions |= ShellAutoComplete.AutoCompleteOptions.UpDownKeyDropsList;
  ac.ACOptions |= ShellAutoComplete.AutoCompleteOptions.UseTab;
  // 定义并返回要显示的列表
  SourceCustomList custom = new SourceCustomList();
  custom.StringList = list;
  ac.ListSource = custom;
  // 尝试激活自动完成功能
  try
  {
   // 激活自动完成功能
   ac.SetAutoComplete(true);
  }
  catch
  {
   // 如果出错则不作处理
   return;
  }
 }

SHAutoComplete自动完成的实现

// 向系统注册我们需要的消息 const UINT m_nAcItemActivateMsg = RegisterWindowMessage(_T("AC_ItemActivate"));   ...
  • Im17benteng
  • Im17benteng
  • 2011年08月29日 13:40
  • 664

C#TextBox自动提示、自动补全、自动完成功能

相关属性 TextBox.AutoCompleteCustomSource属性 获取或设置当TextBox.AutoCompleteSource属性设置为【CustomSource】时使用的自定义 T...
  • u012441545
  • u012441545
  • 2015年06月23日 09:48
  • 1504

HTML5的form如何关闭自动完成功能

HTML的输入框可以拥有自动完成的功能,当你往输入框输入内容的时候,浏览器会从你以前的同名输入框的历史记录中查找出类似的内容并列在输入框下面,这样就不用全部输入进去了,直接选择列表中的项目就可以了。 ...
  • shangazhe
  • shangazhe
  • 2017年07月12日 09:08
  • 1913

ThinkPHP学习笔记(十)在Model中完成自动验证前台的表单数据

index.html UserModel.class.php
  • devilzy2656
  • devilzy2656
  • 2013年01月31日 16:08
  • 1173

如何关闭输入框的自动完成功能

 HTML的输入框可以拥有自动完成的功能,当你往输入框输入内容的时候,浏览器会从你以前的同名输入框的历史记录中查找出类似的内容并列在输入框下面,这样就不用全部输入进去了,直接选择列表中的项目就可以了。...
  • yijishashou
  • yijishashou
  • 2010年06月10日 12:42
  • 5038

TextBox实现自动推荐、自动补全

有时候我们在TextBox中输入的内容有一定的范围性和重复性,如,输入星期几(或月份),总共只有7种(或12种)可能;为了简化输入,只需要通过一个列表或数组保存星期(或月份),通过实现TextBox的...
  • softimite_zifeng
  • softimite_zifeng
  • 2016年11月20日 16:08
  • 244

c#TextBox输入框自动提示、自动完成、自动补全功能

功能概览相关属性TextBox.AutoCompleteCustomSource 属性获取或设置当 TextBox.AutoCompleteSource 属性设置为 [CustomSource] 时要...
  • testcs_dn
  • testcs_dn
  • 2015年04月26日 22:05
  • 23531

页面禁止敏感数据自动完成功能

对于表单或敏感输入,显式禁用自动完成功能。通过禁用自动完成功能,之前输入的信息不会在用户输入时以明文形式显示。这也会禁用大多数主要浏览器的“记住密码”功能。   例...
  • dqswuyundong
  • dqswuyundong
  • 2016年03月29日 09:15
  • 466

thinkphp模型的自动验证

可以在自定义模型里添加相应属性完成表单的自动验证: //数据验证规则  protected $_validate = array(   array('id','number','id格式为数字'...
  • u014433030
  • u014433030
  • 2016年07月02日 21:29
  • 329

(C#)WPF类似下拉框的自动完成源,数据是从数据库查询得出动态数据

(C#)WPF语言做的类似于下拉框的自动完成源,比如输入T8..,就可以从数据库中进行检索,查询出符合该条件的所有数据,数据是从数据库查询得出动态数据...
  • GuangXi_YangNan
  • GuangXi_YangNan
  • 2017年05月31日 10:20
  • 990
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义 StringTable 的自动完成功能 (C# API : SHAutoComplete)
举报原因:
原因补充:

(最多只允许输入30个字)