簡體   English   中英

文本框不會失去焦點

[英]textbox not losing focus

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

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

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

但這似乎不起作用,因為Textbox仍然保持接收所有鍵。 我有FormTextboxKeyDown事件處理程序,我已經檢查過所有KeyDown事件都傳遞給TextBox。 我有一個TextBox Leave事件處理程序,它永遠不會被調用。

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

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

我想早在11年這不起作用,但現在

this.ActiveControl = null;

工作正常。 但是,如果您打算使用Tab來循環控件,則可以使用合適的TabIndex聚焦標簽。

如果它像VB一樣工作,我記得,嘗試將表單屬性KeyPreview設置為false,這樣所有鍵只會傳遞給表單上的焦點控件。

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

從Msdn Page上面:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM