簡體   English   中英

在C#中,如何在使用bindingNavigator時取消默認的鼠標單擊事件

[英]In C#, How to cancel the default mouse click event when using bindingNavigator

我是一個新的C#用戶,現在我遇到了使用BindingNavigator的問題。

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

我在bindingNavigatorMoveNextItem_MouseDown事件中添加了一些行,但它仍然移動到下一個項目,即使當前記錄有一些問題(字段有一些邏輯連接)。 這里有專家可以幫我解決這個問題嗎? 非常感謝!

您有兩種方法:覆蓋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);
    }
}

我知道這是舊的......但是對於其他任何人......你應該使用普通按鈕,只使用驗證事件,如果驗證失敗則取消。 控件不會在設計器中顯示屬性,但您仍可以設置它:bindingnavigator.CausesValidation = true; 我在表單加載中執行此操作。

僅此一點仍然不會這樣做。 你還需要設置焦點。 bindingnavigator.focus(); 我在bindingnavigator_ItemClicked事件中執行此操作,因此無論點擊什么按鈕都會發生這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM