Vb.net 为什么不是';LostFocus事件是否正在发生?
在列表框可见的情况下,我单击了windows窗体,希望使用listbox.lostfocus事件来隐藏列表框,但该事件没有发生。我想我可以使用form.click事件隐藏列表框,但如何让表单接受焦点?当焦点移动到另一个控件(如textbox)时,LostFocus事件会起作用,。。。或者,当窗体全部失去焦点时,您可以使用窗体的“单击事件”来检测不希望接收焦点的窗体。它被设计成一个容器控件,它确保它的一个子控件始终获得焦点。从技术上讲,有可能重击它的头部,使它失去这种行为:Vb.net 为什么不是';LostFocus事件是否正在发生?,vb.net,focus,Vb.net,Focus,在列表框可见的情况下,我单击了windows窗体,希望使用listbox.lostfocus事件来隐藏列表框,但该事件没有发生。我想我可以使用form.click事件隐藏列表框,但如何让表单接受焦点?当焦点移动到另一个控件(如textbox)时,LostFocus事件会起作用,。。。或者,当窗体全部失去焦点时,您可以使用窗体的“单击事件”来检测不希望接收焦点的窗体。它被设计成一个容器控件,它确保它的一个子控件始终获得焦点。从技术上讲,有可能重击它的头部,使它失去这种行为: public part
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
this.SetStyle(ControlStyles.ContainerControl, false);
}
protected override void OnClick(EventArgs e) {
this.Focus();
base.OnClick(e);
}
}
然而,这是一个坏主意。表单没有任何方法表明它具有焦点,您还必须重写OnPaint()以执行类似于绘制焦点矩形的操作。如果不这样做,那么用户将完全失去焦点所在的位置。还有相当大的不便,当用户使用键盘时,不会发生任何有趣的事情,因为表单没有它的用途
不要这样做。如果要使控件消失,请在UI中添加菜单项、工具栏按钮或普通按钮。用户可以单击的内容。“this.SetStyle(ControlStyles.ContainerControl,false);”在我尝试时无效,只需单击“this.Focus();”即可执行此操作。列表框的用途是什么?您可能使用了错误的控件。