阅读:1364回复:0
求助:修改当前选择要素指定字段的值
<p><font face="Verdana"> 图层是shp,错误提示:ifb.set_Value(fld, 10); 对COM<em>组件</em>的调用返回了错误 HRESULT E_FAIL<br/> </font></p>
<p><font face="Verdana"></font> </p> <p><font face="Verdana"> private void button1_Click(object sender, EventArgs e)<br/> {<br/> // 获得选中要素pFeature <br/> IEnumFeature pSelected;<br/> IFeature pFeature;<br/> IFeatureLayer pFeatureLayer = (IFeatureLayer)m_CurrentLayer;<br/> pSelected = (IEnumFeature)MainMap.Map.FeatureSelection;<br/> pSelected.Reset();<br/> pFeature = pSelected.Next();</font></p><font face="Verdana"> <p><br/> IFields fis = pFeature.Fields;<br/> IFeatureClass fc = pFeatureLayer.FeatureClass; </p> <p> IFeatureBuffer ifb = fc.CreateFeatureBuffer();</p> <p> ifb = (IFeatureBuffer)pFeature; </p> <p> //使要素处于编辑状态 <br/> IDataset dataset = (IDataset)fc;<br/> IWorkspace workspace = dataset.Workspace;<br/> IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;<br/> workspaceEdit.StartEditing(true);<br/> workspaceEdit.StartEditOperation();</p> <p> //修改属性值 <br/> int fld = fis.FindField("SO3");<br/> ifb.set_Value(fld, 10);</p> <p> fld = fis.FindField("NOx");<br/> ifb.set_Value(fld, "0.27");<br/> pFeature.Store();//保存新创建或修改的要素</p> <p> workspaceEdit.StopEditOperation();<br/> workspaceEdit.StopEditing(true);<br/> }</font></p> |
|