2011-03-26 89 views
0

当列表框可见时,我点击了窗体窗体,希望使用listbox.lostfocus事件让我隐藏列表框 - 但事件不会发生。我想我可以使用form.click事件来隐藏列表框,但是如何让表单接受焦点?为什么LostFocus事件不会发生?

+0

列表框的用途是什么?您可能会使用错误的控件。 – dbasnett 2011-03-27 14:34:31

回答

0

一个表单也不是想收到重点。它被设计成一个容器控件,它确保它的一个子控件总是得到焦点。从技术上讲,可能会在头部扭曲并使其失去该行为:

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     this.SetStyle(ControlStyles.ContainerControl, false); 
    } 
    protected override void OnClick(EventArgs e) { 
     this.Focus(); 
     base.OnClick(e); 
    } 
} 

但这是一个坏主意。一个Form没有任何方式来表明它有焦点,你还必须重写OnPaint()来做类似绘制焦点矩形的操作。如果你不这样做,那么用户完全失去了焦点所在的位置。然而,当用户使用键盘时没有任何有趣的事情会发生,相当不方便,表单没有用处。

不要这样做。如果你想让一个控件消失,那么在你的UI中添加一个菜单项,工具栏按钮或一个普通按钮。用户可以点击的东西。

+0

“this.SetStyle(ControlStyles.ContainerControl,false);”当我尝试它时没有效果,只是“this.Focus();” onClick执行此操作 – ahmedsafan86 2011-03-27 07:40:14

0

LostFocus事件时的工作重点转移到像另一个控制文本框,...或者当窗体这一切失去焦点,您可以使用Click事件的形式来检测taht

相关问题