我有一个带有TimeSpan列的winform应用程序,该列显示日期的小时/分钟部分。当用户输入文本时,使用TimeSpan.TryParse()
将其转换为TimeSpan。当设置值为11小时的用户输入为“11:00”时,这可以按预期工作。问题是,如果使用输入“1100”,它被解析为1100天,这不是我想要的,也不是简单地在“CellValidating事件令人满意的行为中说”坏输入“。
用户输入在readonly属性DataGridViewCellValidatingEventArgs.FormattedValue
中提供,因此我无法更改通过调用链传递的值。 DataGridViewTextBoxCell.EditedFormattedValue
也是只读的,我找不到任何其他允许覆盖默认行为的事件或属性。
这非常令人沮丧。我可以通过验证器编写许多步骤,可以处理多种用户输入格式并从中获取预期值;但除非我丢弃框架提供的所有强类型数据绑定,而是创建一个将所有值存储为字符串的填充对象,但似乎没有任何方法可以这样做。