找回密码
 立即注册

QQ登录

只需一步,快速开始

huchunyan

银牌会员

9

主题

18

帖子

3031

积分

银牌会员

积分
3031

活字格认证

[已处理] 单元格计算事件

huchunyan
银牌会员   /  发表于:2015-9-21 17:28  /   查看:4862  /  回复:4
怎么可以重写单元格的计算事件,比如单元格计算的时候,默认是取单元格的Value值作为计算公式的一部分,现在想改写为取单元格的Tag属性值作为计算公式的一部分

4 个回复

倒序浏览
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 提供了自定义公式功能,代码如下:


  1.         public partial class MainWindow : Window
  2.     {
  3.         public MainWindow()
  4.         {
  5.             InitializeComponent();
  6.         }

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

  10.             gcSpreadSheet1.ActiveSheet.Cells[0, 0].Value = 1;
  11.             gcSpreadSheet1.ActiveSheet.Cells[0, 1].Value = 2;
  12.             gcSpreadSheet1.ActiveSheet.Cells[0, 2].Value = 3;
  13.             gcSpreadSheet1.ActiveSheet.Cells[0, 3].Value = 4;

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

  15.         }
  16.     }

  17.     [Serializable]
  18.     public class AverageFunctionInfo : CalcFunction
  19.     {
  20.         public override string Name { get { return "MyAverage"; } }
  21.         public override int MinArgs { get { return 1; } }
  22.         public override int MaxArgs { get { return 4; } }
  23.         public override object Evaluate(object[] args)
  24.         {
  25.             int X = (int)(args[0]);
  26.             int X1 = (int)(args[1]);
  27.             int X2 = (int)(args[2]);
  28.             int X3 = (int)(args[3]);

  29.             return ((X1 - X / X) <= 20 && ((X2 - X) / X) <= 20 && ((X3 - X) / X) <= 20);
  30.         }
  31.     }
复制代码


但是无法传递tag到Evaluate重载方法中。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-10-20 09:17:00
5#
回复 3楼huchunyan的帖子

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部