我想用C#实现这样一个功能    汉语拼音 索引
 
   假如我在我界面的组合框中输入 CS 就在我的 组合框中的下拉列表中添加并 展开下拉列表 所有的汉语拼音为CS打头的城市名  (在我的SQL数据库里面有的 我首先查找出来了 存在 ArrayList 中)   当我只输入一个 C 时就 添加并展开下拉列表 汉语拼音以 C 打头的所有城市 
   谢谢 高手了  
 最好写上注释 我是初学者  谢谢了 !!!

解决方案 »

  1.   

    1、在索引查询激活后,查询数据库内容(可以用like ‘cs%’)符合的前X0条记录,清除当前下拉列表内容,填充新数据
    2、这里要考虑一个延迟问题,应该是键盘输入停顿300-500毫秒才激活。
      

  2.   

    把查询出的拼音结果放在字符串里。
    然后循环判断 
    if(str.indexOf("cs")!=-1)
    如果不等于-1说明结果存在cs则把cs相关的值显示在下拉列表框里
      

  3.   


       前面的 高手 有没有什么方法能在数据库里查出来的数据中匹配的   
            4楼的兄弟
     如果象你那样查询的话 是不是查出来的就是 "CS" 的项了啊   我是想输入 CS 查询出来的是  长沙   我知道用死方法去添加  但是那样是很麻烦   有没有自动添加的方法   我现在的问题就是如何去匹配我输入的项 请教 高手
      

  4.   

    你的这种需求有点google查询功能,或者是像手机中查找姓名时,输入H就会列出与H有关的所有姓名.
    你是要实现这样的功能吗?
      

  5.   

    是要用字典功能的吧,ajax实现,好像 土豆视频网 有这个功能具体技术我就不知道了,学习中,表示关注
      

  6.   

    麻烦呢没有字库
    或者你说的城市库
    就有难度你把你的数据库里的数据提取出来的时候
    转换
    把汉字转换为拼音到处都是
    也可以只获取,声母的组合要不就直接改数据库,在录入数据的时候,多加个拼音转换
    直接存到数据库里用datatable.select()ArrayList 
    存在ArrayList 里,用循环,遍历
    加个临时的 ArrayList 
    装你筛选后的数据
      

  7.   

    ..你要这样查的话!    最好是表里有个这样的字段 拼音码的字段!    或者就是查询出来后在去对对比。
      然后返回 以C打头的
    ------ 11楼思路就可以!
    ArrayList  
    存在ArrayList 里,用循环,遍历 
    加个临时的 ArrayList  
    装你筛选后的数据 
    -------  
      

  8.   

    很早以前就做过这种功能,其实很简单,适用于地名,人名,商品名等,让查询更方便。我的做法用一个字段存放名称的拼音首字母,这个字段的值在输入名称时就可以得到。省市地名可以有专门的字典,但人名,商品名只能通过计算。网上这样的类很多,输入中文字符串,得到拼音首字母的。最常见的是对一级汉字进行处理,用区位码可以判断首字母,二级汉字就不能用区位码判断了,只能通过类似于字典的方式。或者用微软最新的类库,Microsoft Visual Studio International Pack,其中包含更强大的功能,比如拼音,笔画,繁简转换等。
    下载网址:http://www.microsoft.com/downloads/details.aspx?FamilyID=f9cfc884-1f00-45fa-b2fb-303d9e110bc7&displaylang=zh-cn查询的时候就用Pinyin LIKE 'cs%'这种方式。如果数据量比较大,最好设置一个值,当用户输入的字符长度大于这个值才到数据库中查询。否则输入字母少的时候匹配项太多,改变一个字符就要刷新一次下拉列表项,速度会受影响。如果数据量比较小,比如省市也就几百条,可以先将所有数据查出来放在一个DataTable,List,Directory等中,然后根据输入再查出对应项。DataTable可以直接用SQL条件进行Select。List或者Directory等要把数据转换成对象,适合于面向对象的方式,VB可以用Like直接匹配字符串,C#可以用正则。如果用VS2008,则可以用Linq。以上方式供参考,根据需要选择适合的方式。提示一个小技巧:加载ComboBox的项之前,调用ComboBox.BeginUpdate(),加载完成后调用ComboBox.EndUpdate()。当向列表添加大量的项时,使用这种方法添加项可以防止绘制 ComboBox 时闪烁。另外也不要用ArrayList,装箱拆箱耗资源。尽量采用泛型,用System.Collections.Generic.List类替代ArrayList。如果只是字符串,可以用System.Collections.Specialized.StringCollection类。你的程序是WinForm吧,应该比较容易。如果是Web,就要用Ajax实现,稍微麻烦一点。具体的代码就得靠你自己写,多实践一下就明白了。
      

  9.   

    这里有个中文取简写的类,http://blog.csdn.net/shmilylee/archive/2007/06/28/1670892.aspx供参考在你的数据库中添加一个字段"简写",这个是最好的,在输入城市名称的时候就调用GetAbbreviation方法同时存进数据库还有种办法就是遍历你的城市名称,调用GetAbbreviation方法(只在城市数据不多的情况下可为)
      

  10.   

    16楼给的那个类只能对一级汉字进行处理,但地名特别是县市级地名中经常会包含二级汉字。比如醴陵,得到的是zuoling,海参崴,得到的是haicanzuo,衢州和亳州得到的是zuozhou。我自己的类可以处理二级汉字,但无法处理多音字。建议还是用微软的吧,其中包含的功能更强。在输入的时候动态获取首字母并显示出来,让用户验证。如果是多音字,可以显示出候选项让用户挑选,这样就可以尽量避免多音字的问题。