问题:
我有一个自定义TextBox
,显示ListBox
以向用户提供输入内容的建议。
现在的问题是,当用户离开ListBox
时有一个例外,TextBox
需要隐藏。如果用户点击ListBox
,则ListBox
仍然可见。
有没有办法使用Leave或LostFocus
事件来确定下一个控件是否为ListBox
?
不是问题,但也很有趣:在焦点发生变化之前,你能在控件中发现哪个控件处于活动状态吗?
答案 0 :(得分:1)
在TextBox.LostFocus
事件处理程序中,您可以在关闭可见性之前检查属性ListBox.ContainsFocus
。
ContainsFocus属性文档:https://msdn.microsoft.com/en-us/library/system.windows.forms.control.containsfocus(v=vs.110).aspx
答案 1 :(得分:1)
在ListBox
个活动中,检查当前ListBox
是否是您的TextBox
。如果为真,那么ListBox
在您离开private void textBox1_Leave(object sender, EventArgs e)
{
if (this.ActiveControl != listBox1)
listBox1.Visible = false;
}
之后就会聚焦并且它仍然可见,但如果它是假的,则隐藏message
:
--input table
it = {}
--put input in table
for _input in string.gmatch((message), '%w+') do
it[#it+1] = { input=_input }
end