繁体   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