huchunyan 发表于 2015-9-21 17:28:00

单元格计算事件

怎么可以重写单元格的计算事件,比如单元格计算的时候,默认是取单元格的Value值作为计算公式的一部分,现在想改写为取单元格的Tag属性值作为计算公式的一部分

iceman 发表于 2015-9-21 18:32:00

回复 1楼huchunyan的帖子

抱歉,当前无法使用 tag 值作为 计算依据。

huchunyan 发表于 2015-9-23 11:47:00

怎么可以重写单元格的计算事件,然后在事件处理程序中加上自定义的内容?

iceman 发表于 2015-9-23 14:58:00

回复 3楼huchunyan的帖子

Spread 提供了自定义公式功能,代码如下:


      public partial class MainWindow : Window
    {
      public MainWindow()
      {
            InitializeComponent();
      }

      private void Window_Loaded(object sender, RoutedEventArgs e)
      {
            gcSpreadSheet1.ActiveSheet.AddCustomFunction(new AverageFunctionInfo());

            gcSpreadSheet1.ActiveSheet.Cells.Value = 1;
            gcSpreadSheet1.ActiveSheet.Cells.Value = 2;
            gcSpreadSheet1.ActiveSheet.Cells.Value = 3;
            gcSpreadSheet1.ActiveSheet.Cells.Value = 4;

            gcSpreadSheet1.ActiveSheet.SetFormula(0, 4, "MyAverage(A1,B1,C1,D1)");

      }
    }

   
    public class AverageFunctionInfo : CalcFunction
    {
      public override string Name { get { return "MyAverage"; } }
      public override int MinArgs { get { return 1; } }
      public override int MaxArgs { get { return 4; } }
      public override object Evaluate(object[] args)
      {
            int X = (int)(args);
            int X1 = (int)(args);
            int X2 = (int)(args);
            int X3 = (int)(args);

            return ((X1 - X / X) <= 20 && ((X2 - X) / X) <= 20 && ((X3 - X) / X) <= 20);
      }
    }

但是无法传递tag到Evaluate重载方法中。

iceman 发表于 2015-10-20 09:17:00

回复 3楼huchunyan的帖子

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062
页: [1]
查看完整版本: 单元格计算事件