/// <summary> /// 删除字段 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Delete_Click(object sender, EventArgs e) { if (null == this.dataGridView1.SelectedCells || 1 > this.dataGridView1.SelectedCells.Count) { MessageBox.Show("请选择要删除的列。"); return; } //新建选择列列表 List <DataGridViewColumn> colsToDel = new List <DataGridViewColumn>(); for (int i = 0; i < this.dataGridView1.SelectedCells.Count; i++) { //获取到datagridView中选中的列信息 var column = this.dataGridView1.Columns[this.dataGridView1.SelectedCells[i].ColumnIndex]; if (!colsToDel.Contains(column)) { //添加列信息 colsToDel.Add(column); } } //提示是否删除 if (MessageBox.Show(string.Format("是否删除{0}字段?\n此操作不可撤销。", string.Join(",", colsToDel.AsEnumerable().Select(c => c.Name))), "消息", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { //获得所有要素 GSOFeatures features = _layer.GetAllFeatures(); //遍历选中列的列表 foreach (var item in colsToDel) { //遍历所有要素 for (int i = 0; i < features.Length; i++) { GSOFeature feature = features[i]; //获取选中列在要素属性表中的索引 int index = feature.GetFieldIndex(item.Name); //删除该字段 feature.DeleteField(index); } //同时删除控件中的列 this.dataGridView1.Columns.Remove(item); } //保存图层 _layer.Save(); } }