日期:2014-05-18  浏览次数:21136 次

焦点问题
急:我自己写了个类似dropdownlist控件的控件,可是不知道改控件的焦点失去事件是什么,意思就是我点在窗体的任何地方我的这个控件要收起来。用LEAVE或lostfoucs都只能是点窗体上的控件才失去焦点,点窗体焦点还在.我试了parent.也不满意哦,因为窗体中还有很多面板容器并不是该控件的父容器,怎么办?

------解决方案--------------------
我不清楚你用的是什么方法。

看下面的方法
1、用Form+IMessageFilter模拟一个,其实用一个Form模拟就足够了。

2、从ToolStripDropDown类继承,该类位无焦点窗口,且失去焦点或用户点击别的地方自动关闭
------解决方案--------------------
找了一个以前的例子给你:

1、用Form模拟一个,Form有Deactivate事件,处理它即可。

2、正确的做法是从ToolStripDropDown继承

C# code
//定义一个Hostt
private ToolStripControlHost _controlHost;

private void CreateHost(Control control)
        {
            if (control == null)
            {
                throw new ArgumentException("control");
            }

            _popupControl = control;
            //将控件加入Host,通常是用户控件,也可以手动加入其它控件
            _controlHost = new ToolStripControlHost(control, "popupControlHost");
            _controlHost.AutoSize = false;
            _controlHost.Padding = Padding.Empty;
            _controlHost.Margin = Padding.Empty;
            base.Size = new Size(
                control.Size.Width + Padding.Horizontal,
                control.Size.Height + Padding.Vertical);
            //将该Host加入本类容器中。
            base.Items.Add(_controlHost);
        }

------解决方案--------------------
探讨

用MouseHover和MouseLeave