更改DataGridViewCell用户输入处理行为

时间:2010-09-07 20:24:08

标签: c# winforms datagridview timespan

我有一个带有TimeSpan列的winform应用程序,该列显示日期的小时/分钟部分。当用户输入文本时,使用TimeSpan.TryParse()将其转换为TimeSpan。当设置值为11小时的用户输入为“11:00”时,这可以按预期工作。问题是,如果使用输入“1100”,它被解析为1100天,这不是我想要的,也不是简单地在“CellValidating事件令人满意的行为中说”坏输入“。

用户输入在readonly属性DataGridViewCellValidatingEventArgs.FormattedValue中提供,因此我无法更改通过调用链传递的值。 DataGridViewTextBoxCell.EditedFormattedValue也是只读的,我找不到任何其他允许覆盖默认行为的事件或属性。

这非常令人沮丧。我可以通过验证器编写许多步骤,可以处理多种用户输入格式并从中获取预期值;但除非我丢弃框架提供的所有强类型数据绑定,而是创建一个将所有值存储为字符串的填充对象,但似乎没有任何方法可以这样做。

1 个答案:

答案 0 :(得分:2)

在DataGridView的100亿个事件中,我设法忽略了CellParsing。覆盖它可以让我做我需要做的事。