在 Spread 使用过程中,我们会发现有很多方法的功能是相同的。它们是故意被设置成这样吗?它们之间有什么区别?下面我们将对 SetText 和 SetValue 进行同样的设置去测试它们之间的异同。在进行测试之前,让我先熟悉下 Text 属性和 SetText 方法。实际上它们的功能是相同的,只不过一个是属性,一个是方法。SetValue 和 Value 属性也是同样。但是,SetText 方法和 SetValue 方法之间究竟有什么不同呢?
下面,让我们看四行代码:
fpspread1.ActiveSheet.Cells(0,0).Text="hello"; fpspread1.ActiveSheet.SetText(0,0,"hello"); fpspread1.ActiveSheet.Cells(0,0).Value=19; fpspread1.ActiveSheet.SetValue(0,0,19);复制代码
第一行和第二行代码功能是相同的,第三行和第四行代码功能也是相同的。现在,让我们比较一下第二行和第四行的不同。
1. 正如我们所理解的那样,SetText 方法和 SetValue 方法都是给单元格设值的方法。"Text" 实际上定义在单元格中显示的内容,而 "Value" 实际上定义在单元格的 DataModel 中存储的内容。如果我们改变它们(Text 或者 Value),这两个值都将自动的改变。简单的说,如果我改变单元格的 Text 属性,Value 属性也随着改变,反之亦然。但是,当我说 Text 和 Value 之间存在区别时请不要惊讶。
2.SetText 方法只允许你给单元格设置一个字符串类型的值,而 SetValue 方法允许你给单元格设置任何类型的值。
3. SetValue 的内部处理过程要比 SetText 的处理过程更加迅速。SetValue 方法直接DataModel 交互存储单元格值,而 SetText 方法要先触发关于编辑和校验的事件更新显示界面,然后再存储单元格的值。所以,如果你想让 Spread 运行的更快,请使用 SetValue 或 Value 代替 SetText 或 Text。
4.关于 Text 和 Value 有一个有趣的事情。如果整个表单的单元格都没有文本去显示,Text 和Value 属性都被设置成 null。但是,当我们进入某个单元格的编辑模式时,这两个属性就改变了。如果不输入任何值,Text 属性被设置成空字符串,而 Value 属性仍然是空值。如果我们输入某些值,这两个属性都会获得我们输入的那个值。