【问题标题】:WindowsForms: Following the FocusWindows 窗体:关注焦点
【发布时间】:2015-10-08 04:41:14
【问题描述】:

问题: 我有一个自定义的TextBox,它显示一个ListBox,为用户提供一些输入建议。 现在的问题是,当用户离开TextBox 时需要隐藏ListBox,但有一个例外。如果用户点击ListBoxListBox 将保持可见。

有什么方法可以使用 Leave 或 LostFocus 事件来确定下一个控件是否是我的 ListBox


不是问题,但也很有趣:你能找出一个控件在焦点改变之前哪个控件处于活动状态吗?

【问题讨论】:

    标签: c# winforms textbox listbox focus


    【解决方案1】:

    在您的TextBox.LostFocus 事件处理程序中,您可以在关闭可见性之前检查属性ListBox.ContainsFocus

    包含焦点属性文档:https://msdn.microsoft.com/en-us/library/system.windows.forms.control.containsfocus(v=vs.110).aspx

    【讨论】:

      【解决方案2】:

      在您的textBox_Leave 事件中检查当前的ActiveControl 是否是您的ListBox。如果为真,则在您离开TextBox 后,ListBox 获得焦点,并且应保持可见,但如果为假,则隐藏ListBox

      private void textBox1_Leave(object sender, EventArgs e)
      {
          if (this.ActiveControl != listBox1)
              listBox1.Visible = false;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-11
        • 1970-01-01
        • 2010-10-22
        • 1970-01-01
        相关资源
        最近更新 更多