在列表框可见的情况下,我点击了windows窗体,希望使用listbox.lostfocus事件让我隐藏列表框 - 但事件不会发生。我想我可以使用form.click事件隐藏列表框,但是如何让表单接受焦点?
答案 0 :(得分:0)
当焦点移动到另一个控件(如文本框)时,LostFocus事件工作,或者当表单全部丢失焦点时,您可以使用单击事件为表单检测taht
答案 1 :(得分: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);
}
}
但这不是一个好主意。表单没有任何方式表明它具有焦点,您还必须重写OnPaint()来执行绘制焦点矩形等操作。如果不这样做,则用户完全忘记焦点所在的位置。然后,当用户使用键盘时没有任何有趣的事情会产生相当大的不便,表单没有用处。
不要这样做。如果要使控件消失,请在UI中添加菜单项,工具栏按钮或普通按钮。用户可以点击的东西。