using DevExpress.Utils; using DevExpress.XtraEditors; using GeoSigmaDrawLib; using MeshProcess; using System; using System.Collections.Generic; using System.Drawing; namespace KepGridEditor { public partial class FormVolumeStats : XtraForm { public event EventHandler ModeChanged; // 构造图/等厚图 改变 public event EventHandler MethodChanged; // 容积法/等值线法 改变 public FormVolumeStats() { InitializeComponent(); this.radioGroupMode.SelectedIndexChanged += RadioGroupMode_SelectedIndexChanged; this.radioGroupMethod.SelectedIndexChanged += RadioGroupMethod_SelectedIndexChanged; SetColumnFormat(this.colArea); SetColumnFormat(this.colVolumn); SetColumnFormat(this.colAreaVolumn); this.gridViewData.OptionsMenu.EnableColumnMenu = false; this.gridViewData.OptionsCustomization.AllowGroup = false; this.radioGroupMethod.SelectedIndex = 0; UpdateControlVisibility(); } public class VolumeDisplayItem { public string Name { get; set; } public double Area { get; set; } public double Volumn { get; set; } public double AreaVolumn { get; set; } public VolumeDisplayItem(LineVolumnData data) { this.Name = data.Name; this.Area = data.Area; this.Volumn = data.Volumn; this.AreaVolumn = data.AreaVolumn; } } public void SetDataSource(LineVolumnData[] data) { if (data == null) { this.gridControlData.DataSource = null; return; } List displayList = new List(); foreach (var item in data) { displayList.Add(new VolumeDisplayItem(item)); } this.gridControlData.DataSource = displayList; this.gridViewData.RefreshData(); } // 构造图/等厚图 切换 private void RadioGroupMode_SelectedIndexChanged(object sender, EventArgs e) { ModeChanged?.Invoke(this, GetCurrentMode()); } // 容积法/等值线法 切换 private void RadioGroupMethod_SelectedIndexChanged(object sender, EventArgs e) { UpdateControlVisibility(); int selectedMethod = this.radioGroupMethod.SelectedIndex; MethodChanged?.Invoke(this, selectedMethod); } // 控制显隐及逻辑 private void UpdateControlVisibility() { bool isVolumeMethod = (this.radioGroupMethod.SelectedIndex == 0); if (isVolumeMethod) { // 容积法:启用控件 this.radioGroupMode.Enabled = true; } else { // 等值线法:强制选中“等厚图” (Value = 1) 并禁用 this.radioGroupMode.EditValue = 1; this.radioGroupMode.Enabled = false; } } // 获取当前统计模式 (0:构造图, 1:等厚图) public int GetCurrentMode() { return Convert.ToInt32(this.radioGroupMode.EditValue); } // 获取当前计算方式 (0:容积法, 1:等值线法) public int GetCurrentMethod() { return this.radioGroupMethod.SelectedIndex; } private void SetColumnFormat(DevExpress.XtraGrid.Columns.GridColumn col) { col.DisplayFormat.FormatType = FormatType.Numeric; col.DisplayFormat.FormatString = "f6"; } } }