首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么建立一个form,使得它能向combobox一样地消失

2012-03-08 
如何建立一个form,使得它能向combobox一样地消失点击combobox,会出现一个下拉框。如果此时鼠标点击其他地方

如何建立一个form,使得它能向combobox一样地消失
点击combobox,会出现一个下拉框。如果此时鼠标点击其他地方,则下拉框消失,鼠标点击的地方获得焦点。

现在想搞类似的一个form,当鼠标点击该form以外的地方时,form消失,鼠标点击的地方获得焦点。

注:该form(formA)必须为另一form(formB)生成。鼠标有可能点在formB内,也有可能点在程序外的地方。如果点在程序内(formB内),则formB上鼠标对应的控件得到焦点。如果点在程序外,当然谁也不得到焦点,但是formA还是应该消失。

[解决办法]
写写我理解的大概意思:

formb.button.click

forma.show;//显示的位置可以通过ini文件读取或者ScreenToClient函数转一下,控制窗 //体显示的位置;
formb.edit.enter// 处在焦点输入状态

SendMessage(forma.handle,0,0,WM_CLOSE);

以上事件控件都有,你按这个思路写写看吧
[解决办法]
要达到楼主的效果,只要给窗口添加上WS_POPUP风格即可!菜单、combobox的下拉框,都是带有WS_POPUP的窗口,有这个风格的窗口,特点就是失去焦点就消失!

重载CreateParams,使用SetWindowLong加入WS_POPUP。
[解决办法]
可以尝试在formA.FormDeactivate事件中加入close语句
[解决办法]
在WM_KILLFOCUS时消失。
或者在VCL内部消息:CM_FOCUSECHANGED消息中判断当前的焦点是否在本窗体。不在就消失。

之前实现过。

热点排行