我有一个已经从ArcMap 9.3移植到10.1的插件,这个代码在9.3中完美运行但是由于某些原因在10.1中完全无法工作:
ICalculatorUI calc = new CalculatorUI();
calc.Table = MyTable;
calc.Field = "MyField";
calc.DoModal(ArcMap.Application.hWnd);
实际的代码比这复杂一点,但是我已经尝试过这个简化的版本,它仍然无法正常工作。
计算器对话框弹出正常,我可以输入一个值来设置字段,但是当我点击OK按钮时,对话框会关闭而不会出错,但没有更新。
我打开了表格,我正在使用ArcMap的常规ui进行编辑,并在同一个字段上启动了Field Calculator,并确认它看起来与我使用此时看到的完全相同我自己的表格上的一些代码。只有三个不同之处:
因此,对话框本身显示的所有内容都是相同的,包括字段名称和表格中其他字段的列表。
在ArcMap 9.3中,ICalculatorUI
会在调用DoModal
后立即接管所有内容。令人烦恼的是,甚至没有以编程方式提供反馈来表示用户是否取消了对话框,或者[更新/有多少]行是否已更新。非常黑盒子,它吸,但至少它工作!
我无法在任何地方找到任何帮助,特别是在ESRI的可怜文档上,这些文档似乎是从他们的9.x文档中复制和粘贴的。
编辑:为什么没有意见?已经好几天了,它显示问题只被查看了两次,这两个都是我(这个编辑使得3)。我一年前问过的另一个问题是风滚草徽章,唯一的活动是我发表评论 - 没有答案,总共只有40个观点(大多数是我的,我确定)。那又怎么样了?那么把我的问题放在某个后座柜里?我确实需要一些帮助......答案 0 :(得分:1)
我还没有尝试在10.1之前使用ICalculatorUI,但我认为您需要使用 ICalculator 界面进行实际计算,如此(假设 calc 您在问题中定义的变量)
ICalculator calculator = new Calculator();
calculator.Expression = calc.Expression;
calculator.PreExpression = calc.PreExpression;
calculator.Field = "MyField";
calculator.Cursor = table.Search(null, false);
calculator.Calculate();