当前位置: 代码迷 >> PB >> DDLB (DropDownListBox) 控件捕捉用户的按键,用哪个事件?如何动态改变DDLB的列表顺序
  详细解决方案

DDLB (DropDownListBox) 控件捕捉用户的按键,用哪个事件?如何动态改变DDLB的列表顺序

热度:295   发布时间:2016-04-29 10:37:21.0
DDLB (DropDownListBox) 控件捕捉用户的按键,用哪个事件?怎么动态改变DDLB的列表顺序?
第1个问题:在DropDownListBox自定义事件:com_Key(pbm_keydown),在DDLB的AllowEdit框没有勾选上,则用户的按键能触发此事件;但如果下拉列表框能允许编辑,则就无法触发这个事件了。请问各位大侠,这种情况下,怎么捕捉到用户的按键?

第2个问题:在DDLB中,当用户输入完成一项内容后,如果这项内容不在原来的下拉列表中,则将这项内容加入到下拉列表中,这个实现起来没问题。如果这项内容原来是在下拉列表中(如原来在第5项的),则我想将这项内容变成第1项,所以我在DDLB的modified事件中写了以下代码来实现以上功能:
  int i
  i = THIS.FindItem(THIS.Text, 0)
  IF i > 0 THEN THIS.DeleteItem(i) //删除原来的项
  THIS.InsertItem(THIS.Text, 0) //将当前输入的内容串放在第一位
以上代码能实现此功能,但奇怪的现象就是:这时候在DDLB框中显示的内容没有掉了,但用THIS.Text取得的值仍然是原来用户输入的正确值。此问题的产生估计是因为在Modified事件中改变了下拉列表项而造成的。请问各位有没有办法避免这个问题?

------解决方案--------------------
1.


2.
this.Sorted = false
------解决方案--------------------
pbm_enchanged
------解决方案--------------------
1.用自定义Pbm_enchanged事件再试一下

2.看一下是不是你的下拉列表设置了自动排序
------解决方案--------------------
1.home、enter为什么需要触发ddlb?如是真要实现这种效果,建议用dropdowndatawindow来模拟实现吧

2.重新对DDLB框中显示的内容进行赋值
------解决方案--------------------
1.不需要每个都做一个dw出来,你可以做一个,然后动态修改即可实现你的需求


2.用post函数再试试
------解决方案--------------------
有时间,帮你试试这个