在C#中,如何在使用bindingNavigator时取消默认的鼠标单击事件

时间:2012-07-19 03:12:10

标签: c# winforms data-binding bindingsource

我是新的C#用户,现在我遇到了使用BindingNavigator的问题。

我使用bindingNavigator来更新数据库表中的记录。在我离开当前更新的记录并通过单击下一步按钮输入下一条记录之前,我将执行一些验证,如果有任何不正确的事情,我希望它可以发出警告,让我有机会纠正错误的字段而不是转移到下一条记录。

我在bindingNavigatorMoveNextItem_MouseDown事件中添加了一些行,但它仍然移动到下一个项目,即使当前记录有一些问题(字段有一些逻辑连接)。这里有专家可以帮我解决这个问题吗?非常感谢!

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

我知道这已经老了......但对于其他人来说...... 您应该使用普通按钮,只使用验证事件,如果验证失败,则取消。 控件不会在设计器中显示属性,但您仍可以设置它:bindingnavigator.CausesValidation = true; 我在表单加载中执行此操作。

单凭这一点仍然没有做到。 你还需要设置焦点。 bindingnavigator.focus(); 我在bindingnavigator_ItemClicked事件中执行此操作,因此无论点击什么按钮都会发生这种情况。