Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 为什么不是';LostFocus事件是否正在发生?_Vb.net_Focus - Fatal编程技术网

Vb.net 为什么不是';LostFocus事件是否正在发生?

Vb.net 为什么不是';LostFocus事件是否正在发生?,vb.net,focus,Vb.net,Focus,在列表框可见的情况下,我单击了windows窗体,希望使用listbox.lostfocus事件来隐藏列表框,但该事件没有发生。我想我可以使用form.click事件隐藏列表框,但如何让表单接受焦点?当焦点移动到另一个控件(如textbox)时,LostFocus事件会起作用,。。。或者,当窗体全部失去焦点时,您可以使用窗体的“单击事件”来检测不希望接收焦点的窗体。它被设计成一个容器控件,它确保它的一个子控件始终获得焦点。从技术上讲,有可能重击它的头部,使它失去这种行为: public part

在列表框可见的情况下,我单击了windows窗体,希望使用listbox.lostfocus事件来隐藏列表框,但该事件没有发生。我想我可以使用form.click事件隐藏列表框,但如何让表单接受焦点?

当焦点移动到另一个控件(如textbox)时,LostFocus事件会起作用,。。。或者,当窗体全部失去焦点时,您可以使用窗体的“单击事件”来检测不希望接收焦点的窗体。它被设计成一个容器控件,它确保它的一个子控件始终获得焦点。从技术上讲,有可能重击它的头部,使它失去这种行为:

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();”即可执行此操作。列表框的用途是什么?您可能使用了错误的控件。