触发DFL中的ComboBox控件的键盘事件

class ComboxKeyDownFilter:IMessageFilter 
{ 
   HWND m_EditHwnd; 
    
   this(ComboBox cbox){ 
      m_EditHwnd=FindWindowExA(cbox.handle,null,"Edit",null); 
   } 
   bool preFilterMessage(inout Message m) 
   { 
      if(m.msg ==WM_KEYDOWN && m_EditHwnd==m.hWnd) 
      { 
         writefln("KewDown!"); 
         return false; 
      } 
      return false; 
   } 
} 

 前几天用ComboBox,发现不能触发KeyDown事件,发到Dsource了,昨天看看还没有回音.自己干吧,今天早晨好好研究了下.发现得使用Application的IMessageFilter.

 

原因是ComboBox包含两个控件,Edit和List,Key事件发送给了Edit,所以在ComboBox的Key事件什么也没有做.

你可能感兴趣的:(key combobox)