當前在我的應用程序中無法取消選擇文本框。唯一的方法是選擇另一個文本框。我的用戶和我同意,單擊表單上的任何其他位置都應取消選擇當前的文本框。我嘗試覆蓋很多控件上的MouseDown,並將焦點設置爲一個隨機標籤,但它不適用於某些控件,如MenuStrip或滾動條。有任何想法嗎?如果用戶在表單上的其他位置點擊,如何取消選擇文本框?
回答
假設您的論壇上沒有其他控件,請嘗試添加一個可以獲得焦點的Panel控件。
將Panel
控件上的TabIndex
設置爲小於TextBox
或NumericUpDown
控件所具有的值。
現在,當您的主窗體獲得焦點時,Panel
應該接收焦點而不是TextBox
區域。
這並不能解決我的問題。我不希望它們被啓用或禁用,只有當用戶點擊時纔會失去焦點。此外,這隻會檢測表單點擊,而不是控制表單上的點擊。 –
如果控件被禁用,它將不會收到鼠標消息,並且不會收到焦點。 –
是的,但只有當用戶點擊*表格上的空白區域時,它纔會禁用它(我不想)。 –
我有某種 「變通」 爲你的。只是另一個控制(可以獲得焦點)在後臺。我測試了一個GridView(它將把你的控件繪製成灰色) - 但你應該可以用你想要的顏色或者只是設置gridview(doh)的背景顏色的自定義控件來完成它。 這種方式每次用戶點擊背景時,這個backgroundcontrol將獲得焦點。
這也行不通。它只是將所有控件的容器從表單更改爲面板。同樣的問題依然存在。 –
既然你可能有一個標籤,或者你的winform上的任何其他控件,我會去解決方案recommended here,只需在窗體被點擊時將焦點賦予標籤。
最糟糕的情況下,您甚至可以添加位於-100,-100位置的標籤,將其設置爲Tab鍵順序中的第一個和Focus()單擊表單中的第一個。
我最近有類似的問題。我的界面非常複雜,有很多面板和標籤頁,所以我找到的簡單答案都沒有奏效。
我的解決方案是以編程方式將鼠標點擊處理程序添加到我的表單中的每個非可聚焦控件,這會嘗試將任何標註集中在表單上。在不同的標籤頁上關注特定的標籤不會起作用,所以我最終循環並聚焦所有標籤。
代碼來完成如下:
private void HookControl(Control controlToHook)
{
// Add any extra "unfocusable" control types as needed
if (controlToHook.GetType() == typeof(Panel)
|| controlToHook.GetType() == typeof(GroupBox)
|| controlToHook.GetType() == typeof(Label)
|| controlToHook.GetType() == typeof(TableLayoutPanel)
|| controlToHook.GetType() == typeof(FlowLayoutPanel)
|| controlToHook.GetType() == typeof(TabControl)
|| controlToHook.GetType() == typeof(TabPage)
|| controlToHook.GetType() == typeof(PictureBox))
{
controlToHook.MouseClick += AllControlsMouseClick;
}
foreach (Control ctl in controlToHook.Controls)
{
HookControl(ctl);
}
}
void AllControlsMouseClick(object sender, MouseEventArgs e)
{
FocusLabels(this);
}
private void FocusLabels(Control control)
{
if (control.GetType() == typeof(Label))
{
control.Focus();
}
foreach (Control ctl in control.Controls)
{
FocusLabels(ctl);
}
}
然後添加到您的Form_Load事件:
HookControl(this);
- 1. 如何在選擇1時取消選擇其他列表框
- 2. 如何在我點擊其他地方時取消選擇JList?
- 3. 上點擊單元格,選擇/取消選擇複選框
- 4. 取消選擇精靈在舞臺上或其他動畫片段中的其他位置點擊
- 5. 當選擇其他列表框時取消選擇列表框
- 6. 如果用戶點擊其他地方,Javascript如何關閉上下文菜單
- 7. WPF:如果用戶點擊子列表框,如何選擇父列表框
- 8. 如何使用文本框手動設置其他表單的位置?
- 9. 選擇焦點上的文本框,取消選擇模糊
- 10. 重置選擇框當點擊任何其他選擇框在jQuery
- 11. 如果選中表格複選框,取消選中其他表格複選框?
- 12. 取消勾選複選框,如果其他選項使用javascript
- 13. 如何在點擊取消時恢復單選按鈕選擇?
- 14. 如何在用戶點擊其他地方時驗證表單
- 15. 如果我在其他文本框中輸入,取消文本框
- 16. 取消選擇所有其他選擇,如果從其他部分選擇一個單元格中UICollectionView
- 17. C# - 根據點擊位置選擇文本框的行
- 18. VBA Excel選擇文件 - 單擊取消時清除文本框
- 19. 如果選中其他複選框,則取消選中
- 20. 如果複選框選中其他操作取消選中
- 21. 在文檔的其他位置點擊時,框消失了嗎? (jQuery)
- 22. 點擊選擇輸入文本框後,如何得到插入位置?
- 23. 當我點擊取消時,如何設置取消選中的複選框
- 24. 如何在其他地方點擊時離開文本框?
- 25. 如何在用戶點擊鏈接時自動選擇文本?
- 26. 如何在用戶點擊EditText時選擇NOT ALL文本?
- 27. 從一個表中選擇用戶如果已經在其他
- 28. 複選框選擇/取消選擇中繼器時點擊文本
- 29. 取消選中複選框,如果點擊對應的div
- 30. 切換複選框選中/取消選中如果點擊
什麼是這樣規定的理由?這對您的用戶有什麼好處? – cdhowie
你使用的平臺是什麼? WinForms,ASP.NET,WPF? –
@Kevin:Winforms C# –