2011-08-24 68 views
1

如果你製作一個新的C#項目並在表單上放置一個NumericUpDown(或者就此而言甚至是文本框),是不可能取消選擇的?無法取消選擇NumericUpDown?

目前我的應用程序有一個可滾動容器,當用戶選擇一個NumericUpDown時,他或她不能取消選擇它。然後,當試圖使用鼠標的滾輪查看任何內容時,它會滾動NumericUpDown的值。

理想情況下,當用戶點擊窗體上的空白處時,它會選擇窗體並取消選擇NumericUpDown。無論是或一般禁用鼠標滾輪上的NumericUpDown(不知道如何做到這一點)。 NumericUpDown包含的數據不會經常變化,所以它不會真正影響用戶。

回答

4

要禁用一個NumericUpDown你需要創建自己的後代控制鼠標滾輪滾動,它覆蓋OnMouseWheel事件,並在窗體上使用自定義控件。

public class NonScrollingNumericUpDown : NumericUpDown 
{ 
    protected override void OnMouseWheel(MouseEventArgs e) 
    { 
      //Don't call base.OnMouseWheel(e) 
    } 
} 

要解答有關控制焦點問題,我相信你會需要有表格上至少一個其他控制手離開注意力過多。

3

在表單中添加標籤並清除其Text屬性。這會讓您看到一個無法看到但仍能獲得焦點的標籤。

在窗體的Click事件,調用此代碼將焦點設置到標籤:

label1.Focus(); 
+0

我喜歡這種方式。我有一個數據網格視圖的表單,我上下滾動。這會導致數字上/下改變。我只在數字上使用鼠標事件,並將焦點設置回DGV。 – ValiRossi