2011-08-25 31 views
0

TextBoxes和NumericUpDowns具有不允許您在選擇它們後取消選擇它們的奇特屬性。當我的用戶選擇一個NumericUpDown並單擊其他位置時,應該取消選擇NumericUpDown。如何在任何非TextBox控件上檢測MouseDown?

不幸的是,事實並非如此。目前,我只是處理窗體上所有其他控件(如面板和實際窗體本身)的MouseDown事件,只是調用隨機標籤的Focus方法以從NumericUpDown中移除焦點。但是,這不能應用於菜單項或滾動條。

必須有更好的方法來做到這一點。用戶可能希望滾動面板而不是NumericUpDown,並直觀地單擊面板然後使用滾輪,但目前它會滾動NumericUpDown,因爲它仍然具有焦點。

感謝您的閱讀。

編輯:問題仍未解決。

回答

1

通常面板控制是不可聚焦控制。因此,單擊Panel不會從TextBox或NumericUpDown Countrol中刪除焦點。

解決方法是,在面板上放置一個按鈕並將其從視圖中移開,例如將其設置爲x = -100和y = -100。不要設置visible = false。

現在無論何時用戶單擊面板(Panel_Click事件),將焦點(Button.Focus())設置爲該按鈕。通過這種方式,面板可以通過滾輪滾動。

0

附上的數字框中顯示某種類型的面板內,然後做

panel1.MouseHover += new EventHandler(panel1_MouseHover); 

private void panel1_MouseHover(object sender, EventArgs e) 
     { 
      if (numericUpDown1.Focused) 
      { 
       panel1.Focus(); 
      } 
     } 

我測試了它和它的作品!

+0

我不確定這真的有幫助嗎?也許我錯過了一些東西,但我有點想要相反的東西。如果鼠標在屏幕上的其他位置點擊,則NumericUpDown應該變得不重點。 –

+0

是的,這是它的作用,當你離開數字文本框失去焦點,你甚至可以改變懸停點擊或其他東西,但它做你想做的。我不知道它如何幫助你 – swordfish

+0

如果我選擇了NumericUpDown,然後單擊面板或標籤,例如NumericUpDown仍然處於選中狀態。我不確定你的代碼能解決什麼問題,但問題仍然存在。 –

相關問題