有没有忘了在InitializeComponent()加入这句话? this.txtBox.LostFocus += new System.EventHandler(this.txtBox_LostFocus);

解决方案 »

  1.   

    我做过一个和你的控件相同功能的控件,也是用ListView控件。我给你个办法,你可以在你的控件中加一个属性:
    /// <summary>
    /// 字典父控件
    /// </summary>
    public TextBox ParentEx
    {
    set
    {
    TempTxt=value;
    }
    }
    使用时将文本框给这个属性
    cmicDict.ParentEx=txtBox1;
    Leave事件中写
    TempTxt.Focus();
    你可以留个Email,我把我写的控件发给你参考一下。
      

  2.   

    其实他的问题是这样的
    并不是失去焦点没被捕获
    而是它根本没失去焦点
    因为点击了不可获得焦点的控件.
    窗体的活动控件仍是ListView, Leave事件不会被触发
    目的可能是在鼠标点击了其他地方之后将ListView隐藏,象ComboBox的下拉框一样不过我也没想到好办法
    大概只能全局捕获鼠标事件....
      

  3.   

    判斷光標位置把,如果不在其內則隱藏之。
    MouseLeave的觸發是不需要點擊什么東西的呀?
      

  4.   

    我见过一个控件的做法是在WndProc中判断鼠标按下的消息,如果鼠标点不在其ClientRectangle内则关掉下拉框。
      

  5.   

    弹出的ListView必须设置Mouse Capture.在Mouse点出ListView时释放Mouse Capture并关闭ListView.
      

  6.   

    楼上的,请教怎么设置Mouse Capture?
      

  7.   

    看这个帖子是否可以解决你的问题。http://expert.csdn.net/Expert/topic/1994/1994222.xml?temp=.2955896
      

  8.   

    但是在自定义控件的WndProc方法中,只能捕获这个控件的事件。在其他控件上点击鼠标时,没有反应的。
    还是不行!