using System; using System.Windows.Forms; using Infragistics.Win.UltraWinGrid; namespace Core.Mes.Client.Comm.Control { /// /// ExtendedUltraGrid /// 1.支持列标题复选框全选功能 /// public class ExtendedUltraGrid : UltraGrid { /// /// 需要进行选择的列名 /// public string SelectAllColumnName{get;set;} internal bool IsGroupMode { get { foreach (var row in this.Rows) { if (row.IsGroupByRow) { return true; } } return false; } } internal CheckState CheckState{ get; set; } /// /// ExtendedUltraGrid /// public ExtendedUltraGrid() { this.CreationFilter = new CheckableHeaderCreationFilter(this); } /// /// 重写 UltraGrid OnCellChange方法 /// 全选时或反选时触发对应CellChange事件 /// /// protected override void OnCellChange(CellEventArgs e) { base.OnCellChange(e); if (e.Cell.Column.Key.Equals(this.SelectAllColumnName)) { if (!Convert.ToBoolean(e.Cell.Value)) { if (CheckState == CheckState.Checked) CheckState = CheckState.Unchecked; } else { if (e.Cell.Row.Band.Columns.Exists(SelectAllColumnName)) { foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in this.Rows) { if (!Convert.ToBoolean(row.Cells[SelectAllColumnName].Value)) { return; } } CheckState = CheckState.Checked; } } } } internal void ChangeCell(Infragistics.Win.UltraWinGrid.UltraGridCell cell) { if (cell != null) { OnCellChange(new CellEventArgs(cell)); } } } }