c# - 默认情况下,当我将数据绑定(bind)到 Windows 窗体控件时会发生什么。

标签 c# winforms

所以我被要求修复一个已经存在了一段时间的旧 Windows 窗体实用程序的问题(至少在我的任何同事出现之前)。该窗体有一个数据绑定(bind)的 numericUpDown 控件。问题是,当您单击向上或向下箭头时,值会更改并保存 OK 但是,如果您只是输入一个数字并单击保存,它不会保存。就像数据绑定(bind)从未看到变化一样,所以从 WPF 背景来看,我猜想改变以下内容

TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete");

为此

TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete", false, DataSourceUpdateMode.OnPropertyChanged);

会解决我的问题,它确实做到了。您现在可以输入数字或使用控件上的向上/向下箭头来设置“值”属性。

我的问题是,首先发生了什么?我猜默认的 DataSourceUpdateMode 是 OnValidation,但这种情况是什么时候发生的,为什么在使用向上/向下箭头时可以,但在输入内容时似乎从未发生过。

谢谢!

最佳答案

numericUD validation

验证是在失去焦点时完成的,因此当您按下向上/向下键时,文本框失去焦点 - 触发验证例程。
编辑文本时,您可以通过单击另一个控件使控件失去焦点,这将导致它生效。
默认设置为 onValidate 的原因是 on 值更改将导致它对每个键入的字符进行验证,这对于性能和正确验证都可能存在问题。

关于c# - 默认情况下,当我将数据绑定(bind)到 Windows 窗体控件时会发生什么。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13495971/

相关文章:

c# - 单声道 : is there a System. 元组?

c# - dapper.net 缓存将数据保存在内存中

c# - 如何使用 SoundPlayer 淡出 .wav 文件的音频而不是立即停止?

c# - 将命名的 datagridview 列与数据表中的特定列绑定(bind)

c# 检测窗口真正调整大小而不是移动

c# - if(var == true) 是否比 if(var != false) 更快?

c# - 覆盖 Json.NET 属性序列化/格式

c# - 在 C# 中旋转 3D 模型

c# - 来自模态对话框的模态对话框 - 当第二个关闭时都关闭 - 为什么?

c# - 关闭子窗体时如何刷新datagridview?