Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / WinForms / Managed / System / WinForms / ListViewGroupItemCollection.cs / 1 / ListViewGroupItemCollection.cs
using System.ComponentModel; using System.Diagnostics; using System; using System.Security.Permissions; using System.Drawing; using System.Windows.Forms; using System.ComponentModel.Design; using System.Collections; using Microsoft.Win32; using System.Globalization; namespace System.Windows.Forms { // A collection of items in a ListViewGroup. // internal class ListViewGroupItemCollection : ListView.ListViewItemCollection.IInnerList { private ListViewGroup group; private ArrayList items; public ListViewGroupItemCollection(ListViewGroup group) { this.group = group; } public int Count { get { return Items.Count; } } private ArrayList Items { get { if (items == null) { items = new ArrayList(); } return items; } } public bool OwnerIsVirtualListView { get { if (this.group.ListView != null) { return group.ListView.VirtualMode; } else { return false; } } } public bool OwnerIsDesignMode { get { if (this.group.ListView != null) { ISite s = group.ListView.Site; return(s == null) ? false : s.DesignMode; } else { return false; } } } public ListViewItem this[int index] { get { return (ListViewItem)Items[index]; } set { if (value != Items[index]) { MoveToGroup((ListViewItem)Items[index], null); Items[index] = value; MoveToGroup((ListViewItem)Items[index], this.group); } } } public ListViewItem Add(ListViewItem value) { CheckListViewItem(value); MoveToGroup(value, this.group); Items.Add(value); return value; } public void AddRange(ListViewItem[] items) { for (int i = 0; i < items.Length; i ++) { CheckListViewItem(items[i]); } Items.AddRange(items); for(int i=0; i < items.Length; i++) { MoveToGroup(items[i], this.group); } } ////// throws an ArgumentException if the listViewItem is in another listView already. /// private void CheckListViewItem(ListViewItem item) { if (item.ListView != null && item.ListView != this.group.ListView) { // [....]: maybe we should throw an InvalidOperationException when we add an item from another listView // into this group's collection. // But in a similar situation, ListViewCollection throws an ArgumentException. This is the v1.* behavior throw new ArgumentException(SR.GetString(SR.OnlyOneControl, item.Text), "item"); } } public void Clear() { for(int i=0; i < this.Count; i++) { MoveToGroup(this[i], null); } Items.Clear(); } public bool Contains(ListViewItem item) { return Items.Contains(item); } public void CopyTo(Array dest, int index) { Items.CopyTo(dest, index); } public IEnumerator GetEnumerator() { return Items.GetEnumerator(); } public int IndexOf(ListViewItem item) { return Items.IndexOf(item); } public ListViewItem Insert(int index, ListViewItem item) { CheckListViewItem(item); MoveToGroup(item, this.group); Items.Insert(index, item); return item; } private void MoveToGroup(ListViewItem item, ListViewGroup newGroup) { ListViewGroup oldGroup = item.Group; if (oldGroup != newGroup) { item.group = newGroup; if (oldGroup != null) { oldGroup.Items.Remove(item); } UpdateNativeListViewItem(item); } } public void Remove(ListViewItem item) { Items.Remove(item); if (item.group == this.group) { item.group = null; UpdateNativeListViewItem(item); } } public void RemoveAt(int index) { Remove(this[index]); } private void UpdateNativeListViewItem(ListViewItem item) { if (item.ListView != null && item.ListView.IsHandleCreated && !item.ListView.InsertingItemsNatively) { item.UpdateStateToListView(item.Index); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System.ComponentModel; using System.Diagnostics; using System; using System.Security.Permissions; using System.Drawing; using System.Windows.Forms; using System.ComponentModel.Design; using System.Collections; using Microsoft.Win32; using System.Globalization; namespace System.Windows.Forms { // A collection of items in a ListViewGroup. // internal class ListViewGroupItemCollection : ListView.ListViewItemCollection.IInnerList { private ListViewGroup group; private ArrayList items; public ListViewGroupItemCollection(ListViewGroup group) { this.group = group; } public int Count { get { return Items.Count; } } private ArrayList Items { get { if (items == null) { items = new ArrayList(); } return items; } } public bool OwnerIsVirtualListView { get { if (this.group.ListView != null) { return group.ListView.VirtualMode; } else { return false; } } } public bool OwnerIsDesignMode { get { if (this.group.ListView != null) { ISite s = group.ListView.Site; return(s == null) ? false : s.DesignMode; } else { return false; } } } public ListViewItem this[int index] { get { return (ListViewItem)Items[index]; } set { if (value != Items[index]) { MoveToGroup((ListViewItem)Items[index], null); Items[index] = value; MoveToGroup((ListViewItem)Items[index], this.group); } } } public ListViewItem Add(ListViewItem value) { CheckListViewItem(value); MoveToGroup(value, this.group); Items.Add(value); return value; } public void AddRange(ListViewItem[] items) { for (int i = 0; i < items.Length; i ++) { CheckListViewItem(items[i]); } Items.AddRange(items); for(int i=0; i < items.Length; i++) { MoveToGroup(items[i], this.group); } } ////// throws an ArgumentException if the listViewItem is in another listView already. /// private void CheckListViewItem(ListViewItem item) { if (item.ListView != null && item.ListView != this.group.ListView) { // [....]: maybe we should throw an InvalidOperationException when we add an item from another listView // into this group's collection. // But in a similar situation, ListViewCollection throws an ArgumentException. This is the v1.* behavior throw new ArgumentException(SR.GetString(SR.OnlyOneControl, item.Text), "item"); } } public void Clear() { for(int i=0; i < this.Count; i++) { MoveToGroup(this[i], null); } Items.Clear(); } public bool Contains(ListViewItem item) { return Items.Contains(item); } public void CopyTo(Array dest, int index) { Items.CopyTo(dest, index); } public IEnumerator GetEnumerator() { return Items.GetEnumerator(); } public int IndexOf(ListViewItem item) { return Items.IndexOf(item); } public ListViewItem Insert(int index, ListViewItem item) { CheckListViewItem(item); MoveToGroup(item, this.group); Items.Insert(index, item); return item; } private void MoveToGroup(ListViewItem item, ListViewGroup newGroup) { ListViewGroup oldGroup = item.Group; if (oldGroup != newGroup) { item.group = newGroup; if (oldGroup != null) { oldGroup.Items.Remove(item); } UpdateNativeListViewItem(item); } } public void Remove(ListViewItem item) { Items.Remove(item); if (item.group == this.group) { item.group = null; UpdateNativeListViewItem(item); } } public void RemoveAt(int index) { Remove(this[index]); } private void UpdateNativeListViewItem(ListViewItem item) { if (item.ListView != null && item.ListView.IsHandleCreated && !item.ListView.InsertingItemsNatively) { item.UpdateStateToListView(item.Index); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CardSpacePolicyElement.cs
- TypeDescriptorContext.cs
- AnnotationHelper.cs
- EntityReference.cs
- XmlWrappingReader.cs
- TreeNodeEventArgs.cs
- XmlSchemaAttribute.cs
- PasswordDeriveBytes.cs
- QueryExecutionOption.cs
- StorageEntitySetMapping.cs
- UnsafePeerToPeerMethods.cs
- IntSecurity.cs
- KeyedCollection.cs
- WebEventCodes.cs
- storepermission.cs
- AssociationSetEnd.cs
- sqlcontext.cs
- EntityDataSourceMemberPath.cs
- DSACryptoServiceProvider.cs
- ToolStripItemCollection.cs
- WebPartConnectionsConfigureVerb.cs
- Psha1DerivedKeyGeneratorHelper.cs
- ScaleTransform3D.cs
- Point3DAnimationBase.cs
- XmlSchemaAppInfo.cs
- SparseMemoryStream.cs
- AsymmetricSecurityProtocol.cs
- XmlLoader.cs
- PageStatePersister.cs
- ChangeConflicts.cs
- NTAccount.cs
- _RequestCacheProtocol.cs
- ListViewDeleteEventArgs.cs
- DataGridViewColumnEventArgs.cs
- SettingsSection.cs
- DataGridViewTextBoxEditingControl.cs
- System.Data.OracleClient_BID.cs
- RuntimeArgumentHandle.cs
- Console.cs
- KeyInterop.cs
- DBSqlParserColumn.cs
- securitycriticaldata.cs
- IssuanceLicense.cs
- WebConfigurationHostFileChange.cs
- InvalidDocumentContentsException.cs
- WmlListAdapter.cs
- XmlSchemaInclude.cs
- SharedStatics.cs
- XmlCharacterData.cs
- WmlTextBoxAdapter.cs
- HttpStaticObjectsCollectionBase.cs
- streamingZipPartStream.cs
- AnnotationObservableCollection.cs
- WebPartExportVerb.cs
- MenuStrip.cs
- NamedPipeConnectionPoolSettings.cs
- WebResourceAttribute.cs
- DoubleUtil.cs
- CustomPeerResolverService.cs
- ObservableDictionary.cs
- XmlRawWriter.cs
- DataGridBeginningEditEventArgs.cs
- ColorComboBox.cs
- WebPartCollection.cs
- FileSystemWatcher.cs
- CompressionTracing.cs
- OSFeature.cs
- RayMeshGeometry3DHitTestResult.cs
- DelegateSerializationHolder.cs
- ButtonBaseAutomationPeer.cs
- WinEventQueueItem.cs
- ModuleBuilder.cs
- HScrollBar.cs
- StrokeRenderer.cs
- DeadCharTextComposition.cs
- SqlAliaser.cs
- HandleRef.cs
- CngAlgorithmGroup.cs
- Vector3DKeyFrameCollection.cs
- RSAPKCS1SignatureFormatter.cs
- contentDescriptor.cs
- HashRepartitionEnumerator.cs
- BaseDataBoundControl.cs
- TcpAppDomainProtocolHandler.cs
- XmlToDatasetMap.cs
- XmlComment.cs
- Intellisense.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- DeviceFilterEditorDialog.cs
- CodePropertyReferenceExpression.cs
- PrinterUnitConvert.cs
- SyndicationSerializer.cs
- GridViewColumnHeaderAutomationPeer.cs
- ZipPackagePart.cs
- SafeSecurityHandles.cs
- SocketInformation.cs
- HierarchicalDataSourceIDConverter.cs
- ComponentManagerBroker.cs
- cookiecontainer.cs
- WebPartChrome.cs