如何使用 DataBindingNavigator 在 .NET 中的 WinForms 导航之前验证表单数据输入?

问题描述 投票:0回答:3

我刚刚开始使用 C# 进行 .NET 开发。尽管我已经熟悉了该语言本身,但我需要一些有关框架特性的帮助。

我正在构建一个 Windows 窗体应用程序来替换简单的 Access 数据库。我已连接数据源,将控件放在表单上,将基本逻辑放在适当的位置,没有任何问题。甚至发现我需要使用 tableAdapterManager.UpdateAll(...) 或类似的方法手动将数据保存回数据库。

我当前的问题是如何在允许用户离开当前记录之前验证我的数据输入,经过多次谷歌搜索后我一直无法找到解决方案。

场景:

用户单击“添加”以获取新记录,填写一些数据,但未填写必填字段之一。然后,用户无需点击“保存”按钮即可导航到不同的记录。应用程序抛出异常,记录丢失。

我可以拦截什么事件,或者我需要重写什么函数来对表单数据进行预导航验证并在数据以某种方式无效时取消导航?

c# winforms data-binding validation
3个回答
0
投票

任何 Windows 窗体都可以处理 FormClosing 事件,您可以在其中放置验证代码。 FormClosing 事件具有 FormClosingEventArgs 对象,因此如果任何验证失败,您可以将其 Cancel 属性设置为 True 以防止导航离开。

编辑

对于使用 BindingNavigator 对象的表单,您应该能够处理其“Validating”事件以达到类似的效果。在 BindingNavigator 的 Validating EventHandler 中,只需为其 CancelEventArgs 对象设置取消参数,以防任何验证失败。


0
投票

如果您使用 datagridview 对象来显示值,则需要处理 RowValidating 事件


0
投票

它在我的 .NET 4.8 项目中工作得更容易:只需将“BindingNavigator.CausesValidation”属性设置为“true”即可。 (设计器仍然不支持此属性,因此请将其写入构造函数中。)与 2015 年的评论不同,您无需执行任何其他操作。现在,控件验证会在出现验证错误时阻止导航。我正在使用标准按钮,并且没有向它们添加任何事件处理。

© www.soinside.com 2019 - 2024. All rights reserved.