[英]textbox not losing focus
我有一個覆蓋整個屏幕的表格。 我有一個textbox
,通常是隱藏的,但是當用戶點擊,拖動鼠標然后離開時出現。 之后,用戶可以在文本框中輸入任何值。 一旦輸入,理想情況下用戶應該能夠在文本框外單擊,然后恢復正常服務。
通過正常服務我的意思是表單應該開始獲取所有事件。 到目前為止我所做的是在TextBox的KeyDown事件上; 當按下Escape鍵時,我將焦點設置為主窗體,如下所示:
this.Focus(); //where this is mainform.
但這似乎不起作用,因為Textbox
仍然保持接收所有鍵。 我有Form
和Textbox
的KeyDown
事件處理程序,我已經檢查過所有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.