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
- StringCollection.cs
- ListViewUpdatedEventArgs.cs
- SqlCommandSet.cs
- ASCIIEncoding.cs
- Line.cs
- TcpServerChannel.cs
- Activity.cs
- FieldNameLookup.cs
- FrameworkReadOnlyPropertyMetadata.cs
- Wizard.cs
- PropertyTab.cs
- MetadataArtifactLoaderResource.cs
- RowBinding.cs
- ClientConfigPaths.cs
- MouseGesture.cs
- PackWebRequestFactory.cs
- PropertyInformation.cs
- DesignConnectionCollection.cs
- MembershipUser.cs
- DataGridState.cs
- ZoneLinkButton.cs
- ObjectStateManager.cs
- HttpContextWrapper.cs
- ReadOnlyHierarchicalDataSourceView.cs
- MatrixIndependentAnimationStorage.cs
- DragStartedEventArgs.cs
- FlowDocument.cs
- EventProviderWriter.cs
- Point4DConverter.cs
- AuthorizationSection.cs
- CodeRegionDirective.cs
- TimeSpanValidatorAttribute.cs
- MatrixAnimationUsingPath.cs
- TextServicesProperty.cs
- ComboBoxItem.cs
- SoapExtensionReflector.cs
- WebPart.cs
- GatewayDefinition.cs
- PropertyInformation.cs
- TextBoxDesigner.cs
- TypeUsage.cs
- DataException.cs
- SoapParser.cs
- HwndKeyboardInputProvider.cs
- WizardSideBarListControlItem.cs
- LinqDataSourceContextEventArgs.cs
- BamlLocalizableResource.cs
- EmptyCollection.cs
- __ConsoleStream.cs
- QilXmlReader.cs
- CodeIterationStatement.cs
- ClientUtils.cs
- SafeBitVector32.cs
- FactoryGenerator.cs
- XmlSchemaCollection.cs
- DataGridViewCellFormattingEventArgs.cs
- FrameworkElement.cs
- UInt16Storage.cs
- FrameworkElement.cs
- TextPattern.cs
- Component.cs
- RoutedUICommand.cs
- FileDialogPermission.cs
- SerializationFieldInfo.cs
- DecoderExceptionFallback.cs
- PictureBox.cs
- FacetChecker.cs
- Switch.cs
- CompilationUnit.cs
- ActivityExecutorOperation.cs
- HandleRef.cs
- MetadataWorkspace.cs
- ExpressionBuilder.cs
- MessageSecurityProtocolFactory.cs
- BoundField.cs
- ObjectToIdCache.cs
- SqlTriggerContext.cs
- Page.cs
- AccessControlList.cs
- XhtmlConformanceSection.cs
- ContextMenuAutomationPeer.cs
- DataSourceControl.cs
- DataGridDetailsPresenter.cs
- MetroSerializationManager.cs
- ErrorActivity.cs
- XmlArrayItemAttribute.cs
- PropertyToken.cs
- PlanCompiler.cs
- ToolboxItemAttribute.cs
- BindingExpressionUncommonField.cs
- FlowNode.cs
- DataServiceResponse.cs
- ListViewPagedDataSource.cs
- XamlTreeBuilderBamlRecordWriter.cs
- FindProgressChangedEventArgs.cs
- GrammarBuilderRuleRef.cs
- ContextStaticAttribute.cs
- CreateCardRequest.cs
- OleDbEnumerator.cs
- HandledMouseEvent.cs