这位风哥,我想你没看懂我写的。所谓的空白处就是装着这个控件的Form啊。我还能控制用户在他的Form里写代码吗?要不就做成只能自己用了,每次点Form都加上这样一段代码。这是我不太想的解决方案。

解决方案 »

  1.   

    可以在下拉框所在的form的deactivate事件中处理
    me.close
    但问题也来了就是焦点处理不好处理
      

  2.   

    这个需要 API 函数的,需要先捕捉鼠标,
    其实 下拉列表,和菜单 都是一种特殊的 窗口,不是在 窗口上的控件。
    需要拦截 WM_MOUSEACTIVATE //主要是这里 处理这个消息可以使窗口怎么点都不获得焦点。然后
     SetWindowPos([特殊的 窗口句并], HWND_TOP, x, y, 0, 0,
          SWP_NOSIZE or SWP_NOACTIVATE or SWP_SHOWWINDOW);
    (这样窗口会到最前,原来的窗口还不会失去焦点)
    在 C# 要调用很多 API 函数(你要是非要用 ListBox 你也可以写一个线程序一直监视鼠标的位置 和是否按下)
      

  3.   

    我认为要实现这个控件功能要解决以下问题
    1:在textbox中输入时,焦点不失,且combobox所在窗体始终显示在前面,但在输入五笔时,显示窗口在form上,我用form.topmost=true方法,可显示在最前面,但在输入五笔时,有小问题,
    我想这里应要用到API.请问用哪个API
    2:当鼠标点textbox所在窗体时,要捕捉按点击信息.应用到Api.
    速达软件能实现这个控件功能.不知如何做多.我目前正在编这个控件.请高手指点.