一千萬個為什麽

搜索

文本框不會失去焦點

我有一個覆蓋整個屏幕的表格。我有一個 textbox ,它通常是隱藏的,但是當用戶點擊,拖動鼠標然後離開時會出現。之後,用戶可以在文本框中輸入任何值。一旦輸入,理想情況下用戶應該能夠在文本框外單擊,然後恢復正常服務。

通過正常服務我的意思是表單應該開始獲取所有事件。到目前為止我所做的是在TextBox的KeyDown事件上;當按下Escape鍵時,我將焦點設置為主窗體,如下所示:

this.Focus(); //where this is mainform.

但這似乎不起作用,因為 Textbox 仍然保持接收所有密鑰。我有 FormTextboxKeyDown 事件處理程序,我檢查了所有 KeyDown 事件是否傳遞到TextBox。我有一個 TextBox 離開事件處理程序,它永遠不會被調用。

TextBox 是表單上唯一的控件,主窗體用於繪制形狀(如果重要)。

那麽,當用戶在其外部點擊時,如何使此 TextBox 失去焦點。

最佳答案

如果您設置表單 KeyPreview 屬性如果是這樣,您的表單首先有機會處理您所做的任何擊鍵。如果它是您想要處理的內容,例如上面的註釋中的轉義,請在表單的KeyDownEvent中處理它並將其標記為已處理,以便您的文本框不會看到它。

從Msdn Page上面:

當此屬性設置為true時,表單將接收所有KeyPress,KeyDown和KeyUp事件。在表單的事件處理程序完成處理鍵擊之後,然後將鍵擊分配給具有焦點的控件。

轉載註明原文: 文本框不會失去焦點