所以我被要求修复一个已经存在了一段时间的旧 Windows 窗体实用程序的问题(至少在我的任何同事出现之前)。该窗体有一个数据绑定(bind)的 numericUpDown 控件。问题是,当您单击向上或向下箭头时,值会更改并保存 OK 但是,如果您只是输入一个数字并单击保存,它不会保存。就像数据绑定(bind)从未看到变化一样,所以从 WPF 背景来看,我猜想改变以下内容
TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete");
为此
TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete", false, DataSourceUpdateMode.OnPropertyChanged);
会解决我的问题,它确实做到了。您现在可以输入数字或使用控件上的向上/向下箭头来设置“值”属性。
我的问题是,首先发生了什么?我猜默认的 DataSourceUpdateMode 是 OnValidation,但这种情况是什么时候发生的,为什么在使用向上/向下箭头时可以,但在输入内容时似乎从未发生过。
谢谢!
最佳答案
验证是在失去焦点时完成的,因此当您按下向上/向下键时,文本框失去焦点 - 触发验证例程。
编辑文本时,您可以通过单击另一个控件使控件失去焦点,这将导致它生效。
默认设置为 onValidate 的原因是 on 值更改将导致它对每个键入的字符进行验证,这对于性能和正确验证都可能存在问题。
关于c# - 默认情况下,当我将数据绑定(bind)到 Windows 窗体控件时会发生什么。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13495971/