读书人

焦点有关问题

发布时间: 2012-03-19 22:03:05 作者: rapoo

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

[解决办法]
我不清楚你用的是什么方法。

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

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

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

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

C# code
//定义一个Hosttprivate 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

读书人网 >C#

热点推荐