Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / DataGridViewCellLinkedList.cs / 1305376 / DataGridViewCellLinkedList.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Diagnostics; using System.Collections; using System.Windows.Forms; using System.ComponentModel; ////// /// internal class DataGridViewCellLinkedList : IEnumerable { private DataGridViewCellLinkedListElement lastAccessedElement; private DataGridViewCellLinkedListElement headElement; private int count, lastAccessedIndex; ///Represents a linked list of ///objects IEnumerator IEnumerable.GetEnumerator() { return new DataGridViewCellLinkedListEnumerator(this.headElement); } /// public DataGridViewCellLinkedList() { this.lastAccessedIndex = -1; } /// public DataGridViewCell this[int index] { get { Debug.Assert(index >= 0); Debug.Assert(index < this.count); if (this.lastAccessedIndex == -1 || index < this.lastAccessedIndex) { DataGridViewCellLinkedListElement tmp = this.headElement; int tmpIndex = index; while (tmpIndex > 0) { tmp = tmp.Next; tmpIndex--; } this.lastAccessedElement = tmp; this.lastAccessedIndex = index; return tmp.DataGridViewCell; } else { while (this.lastAccessedIndex < index) { this.lastAccessedElement = this.lastAccessedElement.Next; this.lastAccessedIndex++; } return this.lastAccessedElement.DataGridViewCell; } } } /// public int Count { get { return this.count; } } /// public DataGridViewCell HeadCell { get { Debug.Assert(this.headElement != null); return this.headElement.DataGridViewCell; } } /// public void Add(DataGridViewCell dataGridViewCell) { Debug.Assert(dataGridViewCell != null); Debug.Assert(dataGridViewCell.DataGridView.SelectionMode == DataGridViewSelectionMode.CellSelect || dataGridViewCell.DataGridView.SelectionMode == DataGridViewSelectionMode.ColumnHeaderSelect || dataGridViewCell.DataGridView.SelectionMode == DataGridViewSelectionMode.RowHeaderSelect); DataGridViewCellLinkedListElement newHead = new DataGridViewCellLinkedListElement(dataGridViewCell); if (this.headElement != null) { newHead.Next = this.headElement; } this.headElement = newHead; this.count++; this.lastAccessedElement = null; this.lastAccessedIndex = -1; } /// public void Clear() { this.lastAccessedElement = null; this.lastAccessedIndex = -1; this.headElement = null; this.count = 0; } /// public bool Contains(DataGridViewCell dataGridViewCell) { Debug.Assert(dataGridViewCell != null); int index = 0; DataGridViewCellLinkedListElement tmp = this.headElement; while (tmp != null) { if (tmp.DataGridViewCell == dataGridViewCell) { this.lastAccessedElement = tmp; this.lastAccessedIndex = index; return true; } tmp = tmp.Next; index++; } return false; } /// public bool Remove(DataGridViewCell dataGridViewCell) { Debug.Assert(dataGridViewCell != null); DataGridViewCellLinkedListElement tmp1 = null, tmp2 = this.headElement; while (tmp2 != null) { if (tmp2.DataGridViewCell == dataGridViewCell) { break; } tmp1 = tmp2; tmp2 = tmp2.Next; } if (tmp2.DataGridViewCell == dataGridViewCell) { DataGridViewCellLinkedListElement tmp3 = tmp2.Next; if (tmp1 == null) { this.headElement = tmp3; } else { tmp1.Next = tmp3; } this.count--; this.lastAccessedElement = null; this.lastAccessedIndex = -1; return true; } return false; } /* Unused for now /// public DataGridViewCell RemoveHead() { if (this.headElement == null) { return null; } DataGridViewCellLinkedListElement tmp = this.headElement; this.headElement = tmp.Next; this.count--; this.lastAccessedElement = null; this.lastAccessedIndex = -1; return tmp.DataGridViewCell; } */ /// public int RemoveAllCellsAtBand(bool column, int bandIndex) { int removedCount = 0; DataGridViewCellLinkedListElement tmp1 = null, tmp2 = this.headElement; while (tmp2 != null) { if ((column && tmp2.DataGridViewCell.ColumnIndex == bandIndex) || (!column && tmp2.DataGridViewCell.RowIndex == bandIndex)) { DataGridViewCellLinkedListElement tmp3 = tmp2.Next; if (tmp1 == null) { this.headElement = tmp3; } else { tmp1.Next = tmp3; } tmp2 = tmp3; this.count--; this.lastAccessedElement = null; this.lastAccessedIndex = -1; removedCount++; } else { tmp1 = tmp2; tmp2 = tmp2.Next; } } return removedCount; } } /// /// /// internal class DataGridViewCellLinkedListEnumerator : IEnumerator { private DataGridViewCellLinkedListElement headElement; private DataGridViewCellLinkedListElement current; private bool reset; ///Represents an emunerator of elements in a ///linked list. public DataGridViewCellLinkedListEnumerator(DataGridViewCellLinkedListElement headElement) { this.headElement = headElement; this.reset = true; } /// object IEnumerator.Current { get { Debug.Assert(this.current != null); // Since this is for internal use only. return this.current.DataGridViewCell; } } /// bool IEnumerator.MoveNext() { if (this.reset) { Debug.Assert(this.current == null); this.current = this.headElement; this.reset = false; } else { Debug.Assert(this.current != null); // Since this is for internal use only. this.current = this.current.Next; } return (this.current != null); } /// void IEnumerator.Reset() { this.reset = true; this.current = null; } } /// /// /// internal class DataGridViewCellLinkedListElement { private DataGridViewCell dataGridViewCell; private DataGridViewCellLinkedListElement next; ///Represents an element in a ///linked list. public DataGridViewCellLinkedListElement(DataGridViewCell dataGridViewCell) { Debug.Assert(dataGridViewCell != null); this.dataGridViewCell = dataGridViewCell; } /// public DataGridViewCell DataGridViewCell { get { return this.dataGridViewCell; } } /// public DataGridViewCellLinkedListElement Next { get { return this.next; } set { this.next = value; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Diagnostics; using System.Collections; using System.Windows.Forms; using System.ComponentModel; ////// /// internal class DataGridViewCellLinkedList : IEnumerable { private DataGridViewCellLinkedListElement lastAccessedElement; private DataGridViewCellLinkedListElement headElement; private int count, lastAccessedIndex; ///Represents a linked list of ///objects IEnumerator IEnumerable.GetEnumerator() { return new DataGridViewCellLinkedListEnumerator(this.headElement); } /// public DataGridViewCellLinkedList() { this.lastAccessedIndex = -1; } /// public DataGridViewCell this[int index] { get { Debug.Assert(index >= 0); Debug.Assert(index < this.count); if (this.lastAccessedIndex == -1 || index < this.lastAccessedIndex) { DataGridViewCellLinkedListElement tmp = this.headElement; int tmpIndex = index; while (tmpIndex > 0) { tmp = tmp.Next; tmpIndex--; } this.lastAccessedElement = tmp; this.lastAccessedIndex = index; return tmp.DataGridViewCell; } else { while (this.lastAccessedIndex < index) { this.lastAccessedElement = this.lastAccessedElement.Next; this.lastAccessedIndex++; } return this.lastAccessedElement.DataGridViewCell; } } } /// public int Count { get { return this.count; } } /// public DataGridViewCell HeadCell { get { Debug.Assert(this.headElement != null); return this.headElement.DataGridViewCell; } } /// public void Add(DataGridViewCell dataGridViewCell) { Debug.Assert(dataGridViewCell != null); Debug.Assert(dataGridViewCell.DataGridView.SelectionMode == DataGridViewSelectionMode.CellSelect || dataGridViewCell.DataGridView.SelectionMode == DataGridViewSelectionMode.ColumnHeaderSelect || dataGridViewCell.DataGridView.SelectionMode == DataGridViewSelectionMode.RowHeaderSelect); DataGridViewCellLinkedListElement newHead = new DataGridViewCellLinkedListElement(dataGridViewCell); if (this.headElement != null) { newHead.Next = this.headElement; } this.headElement = newHead; this.count++; this.lastAccessedElement = null; this.lastAccessedIndex = -1; } /// public void Clear() { this.lastAccessedElement = null; this.lastAccessedIndex = -1; this.headElement = null; this.count = 0; } /// public bool Contains(DataGridViewCell dataGridViewCell) { Debug.Assert(dataGridViewCell != null); int index = 0; DataGridViewCellLinkedListElement tmp = this.headElement; while (tmp != null) { if (tmp.DataGridViewCell == dataGridViewCell) { this.lastAccessedElement = tmp; this.lastAccessedIndex = index; return true; } tmp = tmp.Next; index++; } return false; } /// public bool Remove(DataGridViewCell dataGridViewCell) { Debug.Assert(dataGridViewCell != null); DataGridViewCellLinkedListElement tmp1 = null, tmp2 = this.headElement; while (tmp2 != null) { if (tmp2.DataGridViewCell == dataGridViewCell) { break; } tmp1 = tmp2; tmp2 = tmp2.Next; } if (tmp2.DataGridViewCell == dataGridViewCell) { DataGridViewCellLinkedListElement tmp3 = tmp2.Next; if (tmp1 == null) { this.headElement = tmp3; } else { tmp1.Next = tmp3; } this.count--; this.lastAccessedElement = null; this.lastAccessedIndex = -1; return true; } return false; } /* Unused for now /// public DataGridViewCell RemoveHead() { if (this.headElement == null) { return null; } DataGridViewCellLinkedListElement tmp = this.headElement; this.headElement = tmp.Next; this.count--; this.lastAccessedElement = null; this.lastAccessedIndex = -1; return tmp.DataGridViewCell; } */ /// public int RemoveAllCellsAtBand(bool column, int bandIndex) { int removedCount = 0; DataGridViewCellLinkedListElement tmp1 = null, tmp2 = this.headElement; while (tmp2 != null) { if ((column && tmp2.DataGridViewCell.ColumnIndex == bandIndex) || (!column && tmp2.DataGridViewCell.RowIndex == bandIndex)) { DataGridViewCellLinkedListElement tmp3 = tmp2.Next; if (tmp1 == null) { this.headElement = tmp3; } else { tmp1.Next = tmp3; } tmp2 = tmp3; this.count--; this.lastAccessedElement = null; this.lastAccessedIndex = -1; removedCount++; } else { tmp1 = tmp2; tmp2 = tmp2.Next; } } return removedCount; } } /// /// /// internal class DataGridViewCellLinkedListEnumerator : IEnumerator { private DataGridViewCellLinkedListElement headElement; private DataGridViewCellLinkedListElement current; private bool reset; ///Represents an emunerator of elements in a ///linked list. public DataGridViewCellLinkedListEnumerator(DataGridViewCellLinkedListElement headElement) { this.headElement = headElement; this.reset = true; } /// object IEnumerator.Current { get { Debug.Assert(this.current != null); // Since this is for internal use only. return this.current.DataGridViewCell; } } /// bool IEnumerator.MoveNext() { if (this.reset) { Debug.Assert(this.current == null); this.current = this.headElement; this.reset = false; } else { Debug.Assert(this.current != null); // Since this is for internal use only. this.current = this.current.Next; } return (this.current != null); } /// void IEnumerator.Reset() { this.reset = true; this.current = null; } } /// /// /// internal class DataGridViewCellLinkedListElement { private DataGridViewCell dataGridViewCell; private DataGridViewCellLinkedListElement next; ///Represents an element in a ///linked list. public DataGridViewCellLinkedListElement(DataGridViewCell dataGridViewCell) { Debug.Assert(dataGridViewCell != null); this.dataGridViewCell = dataGridViewCell; } /// public DataGridViewCell DataGridViewCell { get { return this.dataGridViewCell; } } /// public DataGridViewCellLinkedListElement Next { get { return this.next; } set { this.next = value; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PasswordBoxAutomationPeer.cs
- CacheSection.cs
- InputLanguageCollection.cs
- AnimationTimeline.cs
- ClientConfigurationSystem.cs
- TraceHandlerErrorFormatter.cs
- DesignerActionKeyboardBehavior.cs
- TemplateBindingExtensionConverter.cs
- ColorAnimationBase.cs
- SecurityManager.cs
- SessionStateModule.cs
- TransformerConfigurationWizardBase.cs
- FamilyTypeface.cs
- GridViewColumn.cs
- RowTypePropertyElement.cs
- UnauthorizedWebPart.cs
- DrawListViewColumnHeaderEventArgs.cs
- StructuredType.cs
- LayoutTable.cs
- CodeNamespaceCollection.cs
- MDIWindowDialog.cs
- DataColumnMappingCollection.cs
- ControlFilterExpression.cs
- AvTraceDetails.cs
- Crc32.cs
- ManagedFilter.cs
- SmtpNetworkElement.cs
- EventData.cs
- ProcessInputEventArgs.cs
- AttributeUsageAttribute.cs
- tooltip.cs
- LinqDataView.cs
- HtmlEmptyTagControlBuilder.cs
- Msec.cs
- SQLBinaryStorage.cs
- ConfigUtil.cs
- BindingSource.cs
- DataGridViewImageCell.cs
- CodePropertyReferenceExpression.cs
- DynamicValueConverter.cs
- FtpCachePolicyElement.cs
- GridViewRow.cs
- X509Certificate2.cs
- ProxySimple.cs
- ValidationHelpers.cs
- PropertyPushdownHelper.cs
- ClockGroup.cs
- TogglePattern.cs
- SspiSafeHandles.cs
- SerializableTypeCodeDomSerializer.cs
- XmlUtil.cs
- TypeRestriction.cs
- Repeater.cs
- DeclarativeExpressionConditionDeclaration.cs
- Manipulation.cs
- SmtpClient.cs
- ContentPresenter.cs
- _IPv6Address.cs
- ResourceCategoryAttribute.cs
- RequestCacheValidator.cs
- GridSplitterAutomationPeer.cs
- TextRangeEditTables.cs
- RectangleF.cs
- DBConcurrencyException.cs
- SqlGenericUtil.cs
- ValidatingPropertiesEventArgs.cs
- ListBox.cs
- CommonObjectSecurity.cs
- AbstractDataSvcMapFileLoader.cs
- DragDropManager.cs
- Baml2006SchemaContext.cs
- COM2Properties.cs
- CompilationUtil.cs
- SingleObjectCollection.cs
- RecordsAffectedEventArgs.cs
- FilterQuery.cs
- IndentedWriter.cs
- TableItemStyle.cs
- ListDataHelper.cs
- ConfigurationPermission.cs
- NavigatorOutput.cs
- elementinformation.cs
- OptimizedTemplateContentHelper.cs
- QueuePathEditor.cs
- FamilyTypefaceCollection.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- RuleSetDialog.cs
- PageContent.cs
- WebDisplayNameAttribute.cs
- BufferModeSettings.cs
- ListBoxItem.cs
- InternalTypeHelper.cs
- ColorConvertedBitmap.cs
- TextEmbeddedObject.cs
- MILUtilities.cs
- NodeInfo.cs
- KeyedCollection.cs
- LZCodec.cs
- GridViewActionList.cs
- TileBrush.cs