补充一下8# Robert的回复的第五点:关于如何使用MR的校验功能
MultiRow提供了一些内置的校验功能,使用步骤如下
1. 在设计器里选择一个Cell
2. 然后到PropertyGrid窗口找到它的Validators属性,打开,会弹出下面的Dialog。我们默认提供了10种校验,你可以选择其中一种。如下图。
3. 选择好了以后,例如,我们选择RangeValidator,然后在右边的PropertyGrid设置它的属性,如MaxValue,MinValue来确定它的校验范围
4. 同样,在PropertyGrid选择Actions属性,打开它,一个新的Dialog会弹出,如下图。这个属性的意思是校验失败的时候出现什么效果,例如,显示个错误Icon,弹个Tip等。选择其中你所需要的,例如,IconNotify。
5. 那么当程序运行起来后,用户输入一个不在你所设定范围的值,然后离开这个单元格的时候,一个Icon就会提示用户。
关于自定义校验逻辑,如你的用例所说,要校验一个Cell的值是另一个Cell的值的整数倍,那么这就属于一个具体的特殊的商业业务逻辑,需要自己写代码。代码如下:- //继承CellValidator类,写自己的校验逻辑
- public class MyValidator : CellValidator
- {
- protected override bool Validate(ValidateContext context)
- {
- //取得当前单元格的值
- object currentValue = context.EditedFormattedValue;
- //取得要比较的单元格的值
- object otherCellValue = context.GcMultiRow[context.CellPosition.RowIndex, 0].Value;
- {
- //在这里,写你的教研逻辑,正确返回True,不正确返回False,下面的Code只是简单的Demo以下,你要自己根据你的业务需求写如何做判断,
- //例如,一个值时另一个值得倍数等
- if (currentValue.ToString() == otherCellValue.ToString())
- {
- return true;
- }
- else
- {
- context.ValidateInfo = "这个信息提示最终用户";
- return false;
- }
- }
- }
- }
- MyValidator myvalidator = new MyValidator();
- myvalidator.Actions.Add(new IconNotify());
- this.textBoxCell2.Validators.Add(myvalidator);
复制代码 |