2012-07-19 24 views
0

何時取消默認的鼠標點擊事件我是一個新的C#用戶現在我已經在使用BindingNavigator遇到了問題。在C#中,如何使用bindingNavigator

我使用bindingNavigator更新數據庫表中的記錄。在我離開當前更新的記錄並通過點擊下一步按鈕輸入下一條記錄之前,我會執行一些驗證,如果有任何不正確的地方,我希望它可以發出警告,讓我有機會糾正錯誤的字段,而不是移動到下一個記錄。

我加入bindingNavigatorMoveNextItem_MouseDown事件的一些線路,但它仍然移動到下一個項目,甚至有一些事情不對當前記錄(領域有一定的邏輯連接)。這裏的任何專家能幫我解決嗎?非常感謝!

回答

2

你有兩種方式:要麼壓倒一切WndProc和防止調用基的WndProc鼠標點擊窗口消息,或者乾脆重寫OnMouseClick

class Hello : BindingNavigator 
{ 
    private bool canFire = false; 
    protected override void OnMouseClick(MouseEventArgs e) // second approach 
    { 
     // don't call base method so that event doesn't fire up 
     if (this.canFire) 
      base.OnMouseClick(e); 
    } 
} 
+0

謝謝!我知道了,我想重寫所有的導航按鈕,換句話說,我不會使用它的原始按鈕,並會自己創建它們。這對我來說會容易得多。謝謝! – Wintop088 2012-07-19 05:31:05

0

我知道這是老..但對於其他人... 您應該使用正常的按鈕,並且只使用驗證事件,如果有任何驗證失敗,則取消。 該控件不會在設計器中顯示該屬性,但仍可以對其進行設置:bindingnavigator.CausesValidation = true; 我在表單加載中這樣做。

僅此還不能做到這一點。 您還需要設置焦點。 bindingnavigator.focus(); 我在bindingnavigator_ItemClicked事件中這樣做,所以無論點擊哪個按鈕都會發生這種情況。

相關問題