<<< 控件醒目 >>> 如何做一个下拉为TreeView的ComboBox控件? 请高手指正
我用两种方法来实现以上控件,但均告失败
1、在 UserControl中定义一个ComboBox控件 cb,
然后在ComboBox的DropDown事件中激活TreeForm
cb_DropDown()
TreeForm.Show ,UserControl
....
在TreeForm中包含一个TreeView控件 tv
利用窗口子类化技巧
用 SetWindowLong将 NewWindowProc(...) 作tv的新窗口函数
NewWindowProc中其中处理
WM_KILLFOCUS 消息
...
select case uMsg
case WM_KILLFOCUS
{ unload TreeFrom 的功能}
case else
CallWindowProc(...)
End Select
....
这种方法一直工作的很好,但只能工作在普通窗口上,如果是模式对话框
则报错: “ 不能在模式窗口上再显示非模式窗口 ”
如果TreeForm.Show ,UserControl这一句改成
TreeForm.Show vbModal,usercontrol 则根本不工作!
2、于是我用第二种方法
在UserControl中定义两个控件
cb (ComboBox)
tv (TreeView)
然后用焦点转移来控制 UserControl的大小,来是否显示tv
同样子类化tv
问题是我发现当鼠标移出UserControl时,tv根本无法接收到 WM_KILLFOCUS
所以我很痛苦!
请问有没有高手做过类似控件,是如何处理的?