private void btnRun_Click(object sender, EventArgs e) { if (dataGridView1.Rows.Count < 1) { return; } ChangedView(true); try { _stopRunning = false; var rows = dataGridView1.Rows; progressBar1.Maximum = rows.Count; foreach (DataGridViewRow row in rows) { row.Cells["colResult"].Value = string.Empty; } Application.DoEvents(); var layerName = cmbLayers.SelectedItem.ToString(); var layer = dataSourceSelector1.GetLayerByName(layerName); var idFieldName = cmbIdField.SelectedItem.ToString(); var txtFileDir = txtTextFileDir.Text.Trim(); var featureDefn = layer.GetLayerDefn(); var idField = featureDefn.GetFieldDefn(featureDefn.GetFieldIndex(idFieldName)); var sqlFormat = idField.GetFieldType() == FieldType.OFTString ? "{0} = '{1}'" : "{0} = {1}"; var fileNameFormat = cmbNameField.SelectedIndex > 0 ? "{0}_{1}.txt" : "{0}.txt"; foreach (DataGridViewRow row in rows) { if (Convert.ToBoolean(row.Cells["colCheck"].Value) == true) { try { var id = row.Cells["colID"].Value.ToString(); var name = row.Cells["colName"].Value.ToString(); var filePath = Path.Combine(txtFileDir, string.Format(fileNameFormat, id, name)); var features = GdalHelper.GetFeatures(layer, string.Format(sqlFormat, idFieldName, id)); var txtInfo = RedLineManager.GetProjInfoFromFeatures(features.ToArray()); RedLineManager.ToTxtFile(filePath, txtInfo); row.Cells["colResultPath"].Value = filePath; row.Cells["colResult"].Value = "成功"; } catch (Exception ex) { row.Cells["colResult"].Value = "失败:" + ex.Message; } } progressBar1.Value++; Application.DoEvents(); if (_stopRunning) { break; } } } catch (Exception ex) { MessageBox.Show(ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error); } ChangedView(false); }