根据拼音首字母进行过滤的combobox

keywords: 拼音 首字母 过滤

在combobox中输入汉字拼音的首字母时,下面列出对应的可选项,就像下面这样

根据拼音首字母进行过滤的combobox

1。 首先在数据库中需要设计一个表,专门用来存放药物及对应的拼音首字母,这样当用户输入拼音字母后就可以到表中查找匹配的药物,然后再显示

2。 下面的委托方法负责将从数据库获得的查询结果集重新邦定到combobox并自动弹出下拉列表。下面的代码需要注意这几行

// set the cursor at the end of the text
                ctrl.Focus();
                ctrl.Select(oldText.Length, oldText.Length);

其功能就是保证用户能够连续输入字母,并使光标始终位于combobox最后,如果不加这两行,光标就会跑到第一个字母前面

  1. public delegate void ReBindDataSource(ComboBox ctrl, DataSet ds);
  2. public static void BindDataSource(ComboBox ctrl, DataSet ds)
  3. {
  4. try
  5. {
  6. ctrl.BeginUpdate();
  7. // make sure change it to false, or there will be exception if the droppedDownList is empty
  8. ctrl.DroppedDown = false;
  9. string oldText = ctrl.Text;
  10. ctrl.DataSource = ds.Tables[0];
  11. ctrl.DisplayMember = ds.Tables[0].Columns[0].ColumnName;
  12. // set the text, so user can input continuely
  13. ctrl.Text = oldText;
  14. // set the cursor at the end of the text
  15. ctrl.Focus();
  16. ctrl.Select(oldText.Length, oldText.Length);
  17. // do not drop down if it is empty, or there will be exception
  18. if (ctrl.Items.Count > 0)
  19. {
  20. ctrl.DroppedDown = true;
  21. }
  22. ctrl.Cursor = Cursors.Default;
  23. }
  24. catch (Exception ex)
  25. {
  26. //statusLabel.Text = ex.Message;
  27. }
  28. finally
  29. {
  30. ctrl.EndUpdate();
  31. }
  32. }

3。 下面的方法

  1. private void cbM1_TextUpdate(object sender, EventArgs e)
  2. {
  3. // 获得输入的拼音
  4. string abbr = cbM1.Text.Trim();
  5. // 从数据库中查寻符合条件的药物集合
  6. DataSet ds = mPresenter.GetMedicineNamesByAbbr(abbr);
  7. // 重新邦定
  8. cbM1.BeginInvoke(new ReBindDataSource(BindDataSource), cbM1, ds);
  9. }
根据拼音首字母进行过滤的combobox
 
0
上一篇:Python 写一个俄罗斯方块游戏


下一篇:用 JavaScript 实现简单拼图游戏