private void createFieldToolStripMenuItem_Click(object sender, EventArgs e) { string fc_name = selectNode.Text; string set_name = selectNode.Parent.Text; myTreeNode node = (myTreeNode)selectNode.Parent.Parent; IConnectionInfo ci = node.con; IDataSource ds = null; IFeatureDataSet dset = null; IFeatureClass fc = null; try { ds = dsFactory.OpenDataSource(ci); dset = ds.OpenFeatureDataset(set_name); fc = dset.OpenFeatureClass(fc_name); OperateFieldInfoForm form = new OperateFieldInfoForm(null); if (form.ShowDialog() == DialogResult.OK) { IFieldInfoCollection fieldinfos = fc.GetFields(); IFieldInfo newFieldInfo = form.newFieldInfo; for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo fieldinfo = fieldinfos.Get(i); if (null == fieldinfo) { continue; } if (newFieldInfo.Name == fieldinfo.Name) { MessageBox.Show("已有同名字段,添加失败"); return; } } fc.LockType = gviLockType.gviLockExclusiveSchema; fc.AddField(newFieldInfo); fc.LockType = gviLockType.gviLockSharedSchema; // 往树上挂节点 TreeNode fieldNode = new TreeNode(newFieldInfo.Name, 1, 1); selectNode.Nodes.Add(fieldNode); fieldNode.ContextMenuStrip = this.contextMenuStrip4; } } catch (COMException comEx) { System.Diagnostics.Trace.WriteLine(comEx.Message); MessageBox.Show("添加失败"); } catch (System.Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); MessageBox.Show("添加失败"); } finally { fc.LockType = gviLockType.gviLockSharedSchema; if (fc != null) { //Marshal.ReleaseComObject(fc); fc = null; } if (dset != null) { //Marshal.ReleaseComObject(dset); dset = null; } if (ds != null) { //Marshal.ReleaseComObject(ds); ds = null; } } }
private void modifyFieldToolStripMenuItem_Click(object sender, EventArgs e) { string fieldInfo_name = selectNode.Text; string fc_name = selectNode.Parent.Text; string set_name = selectNode.Parent.Parent.Text; myTreeNode node = (myTreeNode)selectNode.Parent.Parent.Parent; IConnectionInfo ci = node.con; IDataSource ds = null; IFeatureDataSet dset = null; IFeatureClass fc = null; IFieldInfo newFieldInfo = null; try { ds = dsFactory.OpenDataSource(ci); dset = ds.OpenFeatureDataset(set_name); fc = dset.OpenFeatureClass(fc_name); // 获取fieldinfo对象 IFieldInfoCollection fieldinfos = fc.GetFields(); for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo fieldinfo = fieldinfos.Get(i); if (null == fieldinfo) { continue; } if (fieldInfo_name == fieldinfo.Name) { newFieldInfo = fieldinfo; break; } } OperateFieldInfoForm form = new OperateFieldInfoForm(newFieldInfo); if (form.ShowDialog() == DialogResult.OK) { newFieldInfo = form.newFieldInfo; fc.LockType = gviLockType.gviLockExclusiveSchema; fc.ModifyField(newFieldInfo); fc.LockType = gviLockType.gviLockSharedSchema; // 修改树上的节点 selectNode.Text = newFieldInfo.Name; MessageBox.Show("修改成功"); } } catch (COMException comEx) { System.Diagnostics.Trace.WriteLine(comEx.Message); MessageBox.Show("修改失败"); } catch (System.Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); MessageBox.Show("修改失败"); } finally { fc.LockType = gviLockType.gviLockSharedSchema; if (newFieldInfo != null) { //Marshal.ReleaseComObject(newFieldInfo); newFieldInfo = null; } if (fc != null) { //Marshal.ReleaseComObject(fc); fc = null; } if (dset != null) { //Marshal.ReleaseComObject(dset); dset = null; } if (ds != null) { //Marshal.ReleaseComObject(ds); ds = null; } } }