public DataGridViewColumn GetLastColumn(DataGridViewElementStates includeFilter, DataGridViewElementStates excludeFilter) { if ((includeFilter & ~(DataGridViewElementStates.Visible | DataGridViewElementStates.Selected | DataGridViewElementStates.Resizable | DataGridViewElementStates.ReadOnly | DataGridViewElementStates.Frozen | DataGridViewElementStates.Displayed)) != DataGridViewElementStates.None) { throw new ArgumentException(System.Windows.Forms.SR.GetString("DataGridView_InvalidDataGridViewElementStateCombination", new object[] { "includeFilter" })); } if ((excludeFilter & ~(DataGridViewElementStates.Visible | DataGridViewElementStates.Selected | DataGridViewElementStates.Resizable | DataGridViewElementStates.ReadOnly | DataGridViewElementStates.Frozen | DataGridViewElementStates.Displayed)) != DataGridViewElementStates.None) { throw new ArgumentException(System.Windows.Forms.SR.GetString("DataGridView_InvalidDataGridViewElementStateCombination", new object[] { "excludeFilter" })); } if (this.itemsSorted == null) { this.UpdateColumnOrderCache(); } for (int i = this.itemsSorted.Count - 1; i >= 0; i--) { DataGridViewColumn column = (DataGridViewColumn)this.itemsSorted[i]; if (column.StateIncludes(includeFilter) && column.StateExcludes(excludeFilter)) { this.lastAccessedSortedIndex = i; return(column); } } return(null); }
public DataGridViewColumn GetPreviousColumn(DataGridViewColumn dataGridViewColumnStart, DataGridViewElementStates includeFilter, DataGridViewElementStates excludeFilter) { if (dataGridViewColumnStart == null) { throw new ArgumentNullException("dataGridViewColumnStart"); } if ((includeFilter & ~(DataGridViewElementStates.Visible | DataGridViewElementStates.Selected | DataGridViewElementStates.Resizable | DataGridViewElementStates.ReadOnly | DataGridViewElementStates.Frozen | DataGridViewElementStates.Displayed)) != DataGridViewElementStates.None) { throw new ArgumentException(System.Windows.Forms.SR.GetString("DataGridView_InvalidDataGridViewElementStateCombination", new object[] { "includeFilter" })); } if ((excludeFilter & ~(DataGridViewElementStates.Visible | DataGridViewElementStates.Selected | DataGridViewElementStates.Resizable | DataGridViewElementStates.ReadOnly | DataGridViewElementStates.Frozen | DataGridViewElementStates.Displayed)) != DataGridViewElementStates.None) { throw new ArgumentException(System.Windows.Forms.SR.GetString("DataGridView_InvalidDataGridViewElementStateCombination", new object[] { "excludeFilter" })); } if (this.itemsSorted == null) { this.UpdateColumnOrderCache(); } int columnSortedIndex = this.GetColumnSortedIndex(dataGridViewColumnStart); if (columnSortedIndex == -1) { bool flag = false; int num2 = -1; int displayIndex = -1; columnSortedIndex = 0; while (columnSortedIndex < this.items.Count) { DataGridViewColumn column = (DataGridViewColumn)this.items[columnSortedIndex]; if (((column.StateIncludes(includeFilter) && column.StateExcludes(excludeFilter)) && ((column.DisplayIndex < dataGridViewColumnStart.DisplayIndex) || ((column.DisplayIndex == dataGridViewColumnStart.DisplayIndex) && (column.Index < dataGridViewColumnStart.Index)))) && ((column.DisplayIndex > displayIndex) || ((column.DisplayIndex == displayIndex) && (column.Index > num2)))) { num2 = columnSortedIndex; displayIndex = column.DisplayIndex; flag = true; } columnSortedIndex++; } if (!flag) { return(null); } return((DataGridViewColumn)this.items[num2]); } columnSortedIndex--; while (columnSortedIndex >= 0) { DataGridViewColumn column2 = (DataGridViewColumn)this.itemsSorted[columnSortedIndex]; if (column2.StateIncludes(includeFilter) && column2.StateExcludes(excludeFilter)) { this.lastAccessedSortedIndex = columnSortedIndex; return(column2); } columnSortedIndex--; } return(null); }