【发布时间】:2011-08-30 05:54:49
【问题描述】:
我有一个覆盖整个屏幕的表单。我上面有一个textbox,它通常是隐藏的,但是当用户单击、拖动鼠标然后离开时会出现。之后,用户可以在文本框中输入任何值。输入后,理想情况下,用户应该能够在文本框之外单击,然后应该恢复正常服务。
通过正常服务,我的意思是表单应该开始获取所有事件。到目前为止,我所做的是在 TextBox 的 KeyDown 事件上;当按下 Escape 键时,我将焦点设置到主窗体,如下所示:
this.Focus(); //where this is mainform.
但这似乎不起作用,因为Textbox 仍然继续接收所有密钥。我对Form 和Textbox 都有一个KeyDown 事件处理程序,并且我检查了所有KeyDown 事件是否都传递到了TextBox。我还有一个 TextBox Leave 事件处理程序,它永远不会被调用。
TextBox 是窗体上的唯一控件,主窗体用于绘制形状(如果重要的话)。
那么,当用户点击它之外时,我怎样才能使这个TextBox 失去焦点。
【问题讨论】:
-
这个问题在这里得到了回答:[stackoverflow.com/questions/1140250/… [1]:stackoverflow.com/questions/1140250/…
-
关注@mmorel1 的链接,您需要有另一个可见=true 但超出表单范围的控件。例如 Textbox1.Left=-20;
-
@Jeremy Thompson:在这种情况下,焦点将转移到该文本框,我的主窗体将停止接收密钥。例如,在主窗体上的 Escape 按钮上,我隐藏了窗体。那是不可能的。知道该怎么做吗?
标签: c# winforms textbox drawing