Richard.Ma 发表于 2020-9-24 16:36:19

使用Spread单元格验证功能

您可以使用内置的验证器和操作来验证单元格中的数据。验证器允许您设置验证条件,例如最小值和最大值。这些操作使您可以在验证失败(单元格颜色更改,声音等)时通知用户。以下为各种类型的验证器:
[*]CharFormatValidator
[*]CompareCellValidator
[*]CompareStringValidator
[*]CompareValueValidator
[*]EncodingValidator
[*]ExcludeListValidator
[*]IncludeListValidator
[*]PairCharValidator
[*]RangeValidator
[*]RegularExpressionValidator
[*]RequiredFieldValidator
[*]RequiredTypeValidator
[*]SurrogateCharValidator
[*]TextLengthValidator

验证结果可以用以下形式提示
[*]下划线通知(LineNotify)
[*]单元格样式通知(CellStyleNotify)
[*]图标通知(IconNotify)
[*]声音通知(SoundNotify)
[*]工具提示通知(TipNotify)
[*]焦点变更通知(FocusProcess)
[*]先前的值通知(ValueProcess)
[*]消息框通知(MessageBoxNotify)
[*]三态图标通知(ThreeStateIconNotify)


通过一个实例说明,如何使用
客户有以下需求,需要验证当前Sheet中(1,1)单元格中的文本等于文本列表中的某一项,否则验证为错误数据
通过以下方式在界面提示用户,并删除错误数据
1.在右侧显示错误图标
2.弹窗错误弹窗


对于上述需求验证单元格中的文本等于文本列表中的某一项,我们可以用IncludeListValidator,
FarPoint.Win.Spread.IncludeListValidator ilist = new FarPoint.Win.Spread.IncludeListValidator();
            ilist.Candidates = new string[] { "Bird", "Deer", "Squirrel", "Lizard" };

给IncludeListValidator中加入一个IconNotify,以显示错误图标,DoActionReason 属性用于控制错误信息显示的时间。在编辑完成后显示
FarPoint.Win.Spread.IconNotify linen = new FarPoint.Win.Spread.IconNotify();
            linen.Icon = Properties.Resources.Spread;
            linen.IconAlignment = ContentAlignment.MiddleRight;
            linen.IconTip = "数据验证失败";
            linen.DoActionReason = FarPoint.Win.Spread.ValidateReasons.EndEdit;

给IncludeListValidator中加入一个MessageBoxNotify,用于显示错误弹窗
            ilist.Actions.Add(
                new MessageBoxNotify() {
                  Icon = MessageBoxIcon.Error,
                  Caption = "错误",
                  Message = "数据验证失败",
                  DoActionReason= ValidateReasons.EndEdit
                }
            );
最后,将此验证器添加到(1,1)单元格中
fpSpread1.Sheets.AddValidators(new FarPoint.Win.Spread.Model.CellRange(1, 1, 1, 1), ilist);

以上代码,已经实现了错误图标提示和错误弹窗提示

我们还需要删除错误数据
使用CellValidateInfoNeeded事件判断验证是否通过
fpSpread1.CellValidateInfoNeeded += FpSpread1_CellValidateInfoNeeded;
另加一个bool变量CellValueisValid 用于保存验证是否通过,然后在FpSpread的Change事件中依据CellValueisValid的值判断是否删除数据
bool CellValueisValid = true;
      private void FpSpread1_CellValidateInfoNeeded(object sender, CellValidateInfoNeededEventArgs e)
      {
            if (!e.IsValid)
            {
               
                CellValueisValid = false;
            }
      }
      private void FpSpread1_Change(object sender, ChangeEventArgs e)
      {
            if(CellValueisValid == false)
            {
                fpSpread1.ActiveSheet.ActiveCell.ResetText();
                CellValueisValid = true;
            }

      }

以下为运行结果









页: [1]
查看完整版本: 使用Spread单元格验证功能