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 / ToolStripItemCollection.cs / 1 / ToolStripItemCollection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing.Design; using System.Diagnostics; using System.Windows.Forms.Layout; using System.Drawing; using System.Security; using System.Security.Permissions; ////// /// Summary description for ToolStripItemCollection. /// [ Editor("System.Windows.Forms.Design.ToolStripCollectionEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), ListBindable(false), UIPermission(SecurityAction.InheritanceDemand, Window=UIPermissionWindow.AllWindows) ] public class ToolStripItemCollection : ArrangedElementCollection, IList { private ToolStrip owner; private bool itemsCollection; private bool isReadOnly = false; /// A caching mechanism for key accessor /// We use an index here rather than control so that we don't have lifetime /// issues by holding on to extra references. /// Note this is not Thread Safe - but Winforms has to be run in a STA anyways. private int lastAccessedIndex = -1; internal ToolStripItemCollection(ToolStrip owner, bool itemsCollection) : this(owner, itemsCollection, /*isReadOnly=*/false){ } ////// internal ToolStripItemCollection(ToolStrip owner, bool itemsCollection, bool isReadOnly) { this.owner = owner; this.itemsCollection = itemsCollection; this.isReadOnly = isReadOnly; } ///[To be supplied.] ////// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public ToolStripItemCollection(ToolStrip owner, ToolStripItem[] value) { if (owner == null) { throw new ArgumentNullException("owner"); } this.owner = owner; AddRange(value); } ///[To be supplied.] ////// /// public new virtual ToolStripItem this[int index] { get { return (ToolStripItem)(InnerList[index]); } } ////// /// /// public virtual ToolStripItem this[string key] { get { // We do not support null and empty string as valid keys. if ((key == null) || (key.Length == 0)){ return null; } // Search for the key in our collection int index = IndexOfKey(key); if (IsValidIndex(index)) { return (ToolStripItem)InnerList[index]; } else { return null; } } } public ToolStripItem Add(string text) { return Add(text,null,null); } public ToolStripItem Add(Image image) { return Add(null,image,null); } public ToolStripItem Add(string text, Image image) { return Add(text,image,null); } public ToolStripItem Add(string text, Image image, EventHandler onClick) { ToolStripItem item = owner.CreateDefaultItem(text,image,onClick); Add(item); return item; } ///Retrieves the child control with the specified key. ////// /// public int Add(ToolStripItem value) { CheckCanAddOrInsertItem(value); SetOwner(value); int retVal = InnerList.Add(value); if (itemsCollection && owner != null) { owner.OnItemAdded(new ToolStripItemEventArgs(value)); } return retVal; } ///[To be supplied.] ////// /// public void AddRange(ToolStripItem[] toolStripItems) { if (toolStripItems == null) { throw new ArgumentNullException("toolStripItems"); } if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } // ToolStripDropDown will look for PropertyNames.Items to determine if it needs // to resize itself. using (new LayoutTransaction(this.owner, this.owner, PropertyNames.Items)) { for (int i = 0; i < toolStripItems.Length; i++) { this.Add(toolStripItems[i]); } } } ///[To be supplied.] ////// /// public void AddRange(ToolStripItemCollection toolStripItems) { if (toolStripItems == null) { throw new ArgumentNullException("toolStripItems"); } if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } // ToolStripDropDown will look for PropertyNames.Items to determine if it needs // to resize itself. using (new LayoutTransaction(this.owner, this.owner, PropertyNames.Items)) { int currentCount = toolStripItems.Count; for (int i = 0; i < currentCount; i++) { this.Add(toolStripItems[i]); } } } ///[To be supplied.] ////// /// public bool Contains(ToolStripItem value) { return InnerList.Contains(value); } ///[To be supplied.] ////// /// public virtual void Clear() { if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } if (Count == 0) { return; } ToolStripOverflow overflow = null; if (owner != null && !owner.IsDisposingItems) { owner.SuspendLayout(); overflow = owner.GetOverflow(); if (overflow != null) { overflow.SuspendLayout(); } } try { while (Count != 0) { RemoveAt(Count - 1); } } finally { if (overflow != null) { overflow.ResumeLayout(false); } if (owner != null && !owner.IsDisposingItems) { owner.ResumeLayout(); } } } ///[To be supplied.] ////// /// public virtual bool ContainsKey(string key) { return IsValidIndex(IndexOfKey(key)); } private void CheckCanAddOrInsertItem(ToolStripItem value) { if (value == null) { throw new ArgumentNullException("value"); } if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } ToolStripDropDown dropDown = owner as ToolStripDropDown; if (dropDown != null) { // VSWhidbey 436973: if we're on a dropdown, we can only add non-control host items // as we dont want anything on a dropdown to get keyboard messages in the Internet. if (dropDown.OwnerItem == value) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCircularReference)); } // VSWhidbey 496526: ScrollButton is the only allowed control host as it correctly eats key messages. if (value is ToolStripControlHost && !(value is System.Windows.Forms.ToolStripScrollButton)) { if (dropDown.IsRestrictedWindow) { IntSecurity.AllWindows.Demand(); } } } } ///Returns true if the collection contains an item with the specified key, false otherwise. ////// /// public ToolStripItem[] Find(string key, bool searchAllChildren) { if ((key == null) || (key.Length == 0)) { throw new System.ArgumentNullException("key", SR.GetString(SR.FindKeyMayNotBeEmptyOrNull)); } ArrayList foundItems = FindInternal(key, searchAllChildren, this, new ArrayList()); // Make this a stongly typed collection. ToolStripItem[] stronglyTypedFoundItems = new ToolStripItem[foundItems.Count]; foundItems.CopyTo(stronglyTypedFoundItems, 0); return stronglyTypedFoundItems; } ///Searches for Items by their Name property, builds up an array /// of all the controls that match. /// ////// ///Searches for Items by their Name property, builds up an array list /// of all the items that match. /// ///private ArrayList FindInternal(string key, bool searchAllChildren, ToolStripItemCollection itemsToLookIn, ArrayList foundItems) { if ((itemsToLookIn == null) || (foundItems == null)) { return null; // } try { for (int i = 0; i < itemsToLookIn.Count; i++) { if (itemsToLookIn[i] == null) { continue; } if (WindowsFormsUtils.SafeCompareStrings(itemsToLookIn[i].Name, key, /* ignoreCase = */ true)) { foundItems.Add(itemsToLookIn[i]); } } // Optional recurive search for controls in child collections. if (searchAllChildren) { for (int j = 0; j < itemsToLookIn.Count; j++) { ToolStripDropDownItem item = itemsToLookIn[j] as ToolStripDropDownItem; if (item == null) { continue; } if (item.HasDropDownItems) { // if it has a valid child collecion, append those results to our collection foundItems = FindInternal(key, searchAllChildren, item.DropDownItems, foundItems); } } } } catch (Exception e) { // VSWHIDBEY 80122 make sure we deal with non-critical failures gracefully. if (ClientUtils.IsCriticalException(e)) { throw; } } return foundItems; } public override bool IsReadOnly { get { return this.isReadOnly; }} void IList.Clear() { Clear(); } bool IList.IsFixedSize { get { return InnerList.IsFixedSize; }} bool IList.Contains(object value) { return InnerList.Contains(value); } void IList.RemoveAt(int index) { RemoveAt(index); } void IList.Remove(object value) { Remove(value as ToolStripItem); } int IList.Add(object value) { return Add(value as ToolStripItem); } int IList.IndexOf(object value) { return IndexOf(value as ToolStripItem); } void IList.Insert(int index, object value) { Insert(index, value as ToolStripItem); } /// /// object IList.this[int index] { get { return InnerList[index]; } set { throw new NotSupportedException(SR.GetString(SR.ToolStripCollectionMustInsertAndRemove)); /* InnerList[index] = value; */ } } /// /// /// public void Insert(int index, ToolStripItem value) { CheckCanAddOrInsertItem(value); SetOwner(value); InnerList.Insert(index, value); if (itemsCollection && owner != null) { if (owner.IsHandleCreated){ LayoutTransaction.DoLayout(owner, value, PropertyNames.Parent); } else { // next time we fetch the preferred size, recalc it. CommonProperties.xClearPreferredSizeCache(owner); } owner.OnItemAdded(new ToolStripItemEventArgs(value)); } } ///[To be supplied.] ////// /// public int IndexOf(ToolStripItem value) { return InnerList.IndexOf(value); } ///[To be supplied.] ////// /// public virtual int IndexOfKey(String key) { // Step 0 - Arg validation if ((key == null) || (key.Length == 0)){ return -1; // we dont support empty or null keys. } // step 1 - check the last cached item if (IsValidIndex(lastAccessedIndex)) { if (WindowsFormsUtils.SafeCompareStrings(this[lastAccessedIndex].Name, key, /* ignoreCase = */ true)) { return lastAccessedIndex; } } // step 2 - search for the item for (int i = 0; i < this.Count; i ++) { if (WindowsFormsUtils.SafeCompareStrings(this[i].Name, key, /* ignoreCase = */ true)) { lastAccessedIndex = i; return i; } } // step 3 - we didn't find it. Invalidate the last accessed index and return -1. lastAccessedIndex = -1; return -1; } ///The zero-based index of the first occurrence of value within the entire CollectionBase, if found; otherwise, -1. ////// ///Determines if the index is valid for the collection. ///private bool IsValidIndex(int index) { return ((index >= 0) && (index < this.Count)); } /// /// Do proper cleanup of ownership, etc. /// private void OnAfterRemove(ToolStripItem item) { if (itemsCollection) { ToolStrip parent = null; if (item != null) { parent = item.ParentInternal; item.SetOwner(null); } if (owner != null) { if (!owner.IsDisposingItems) { ToolStripItemEventArgs e = new ToolStripItemEventArgs(item); owner.OnItemRemoved(e); // VSWhidbey 505129 // dont fire the ItemRemoved event for Overflow // it would fire constantly.... instead clear any state if the item // is really being removed from the master collection. if (parent != null && parent != owner) { parent.OnItemVisibleChanged(e, /*performLayout*/false); } } } } } ////// /// public void Remove(ToolStripItem value) { if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } InnerList.Remove(value); OnAfterRemove(value); } ///[To be supplied.] ////// /// public void RemoveAt(int index) { if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } ToolStripItem item = null; if (index < Count && index >= 0) { item = (ToolStripItem)(InnerList[index]); } InnerList.RemoveAt(index); OnAfterRemove(item); } ///[To be supplied.] ////// /// public virtual void RemoveByKey(string key) { if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } int index = IndexOfKey(key); if (IsValidIndex(index)) { RemoveAt(index); } } ///Removes the child item with the specified key. ////// /// public void CopyTo(ToolStripItem[] array, int index) { InnerList.CopyTo(array, index); } // internal void MoveItem(ToolStripItem value) { if (value.ParentInternal != null) { int indexOfItem = value.ParentInternal.Items.IndexOf(value); if (indexOfItem >= 0) { value.ParentInternal.Items.RemoveAt(indexOfItem); } } Add(value); } internal void MoveItem(int index, ToolStripItem value) { // if moving to the end - call add instead. if (index == this.Count) { MoveItem(value); return; } if (value.ParentInternal != null) { int indexOfItem = value.ParentInternal.Items.IndexOf(value); if (indexOfItem >= 0) { value.ParentInternal.Items.RemoveAt(indexOfItem); if ((value.ParentInternal == owner) && (index > indexOfItem)) { index--; } } } Insert(index,value); } private void SetOwner(ToolStripItem item) { if (itemsCollection) { if (item != null) { if (item.Owner != null) { item.Owner.Items.Remove(item); } item.SetOwner(owner); if (item.Renderer != null) { item.Renderer.InitializeItem(item); } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //[To be supplied.] ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing.Design; using System.Diagnostics; using System.Windows.Forms.Layout; using System.Drawing; using System.Security; using System.Security.Permissions; ////// /// Summary description for ToolStripItemCollection. /// [ Editor("System.Windows.Forms.Design.ToolStripCollectionEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)), ListBindable(false), UIPermission(SecurityAction.InheritanceDemand, Window=UIPermissionWindow.AllWindows) ] public class ToolStripItemCollection : ArrangedElementCollection, IList { private ToolStrip owner; private bool itemsCollection; private bool isReadOnly = false; /// A caching mechanism for key accessor /// We use an index here rather than control so that we don't have lifetime /// issues by holding on to extra references. /// Note this is not Thread Safe - but Winforms has to be run in a STA anyways. private int lastAccessedIndex = -1; internal ToolStripItemCollection(ToolStrip owner, bool itemsCollection) : this(owner, itemsCollection, /*isReadOnly=*/false){ } ////// internal ToolStripItemCollection(ToolStrip owner, bool itemsCollection, bool isReadOnly) { this.owner = owner; this.itemsCollection = itemsCollection; this.isReadOnly = isReadOnly; } ///[To be supplied.] ////// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public ToolStripItemCollection(ToolStrip owner, ToolStripItem[] value) { if (owner == null) { throw new ArgumentNullException("owner"); } this.owner = owner; AddRange(value); } ///[To be supplied.] ////// /// public new virtual ToolStripItem this[int index] { get { return (ToolStripItem)(InnerList[index]); } } ////// /// /// public virtual ToolStripItem this[string key] { get { // We do not support null and empty string as valid keys. if ((key == null) || (key.Length == 0)){ return null; } // Search for the key in our collection int index = IndexOfKey(key); if (IsValidIndex(index)) { return (ToolStripItem)InnerList[index]; } else { return null; } } } public ToolStripItem Add(string text) { return Add(text,null,null); } public ToolStripItem Add(Image image) { return Add(null,image,null); } public ToolStripItem Add(string text, Image image) { return Add(text,image,null); } public ToolStripItem Add(string text, Image image, EventHandler onClick) { ToolStripItem item = owner.CreateDefaultItem(text,image,onClick); Add(item); return item; } ///Retrieves the child control with the specified key. ////// /// public int Add(ToolStripItem value) { CheckCanAddOrInsertItem(value); SetOwner(value); int retVal = InnerList.Add(value); if (itemsCollection && owner != null) { owner.OnItemAdded(new ToolStripItemEventArgs(value)); } return retVal; } ///[To be supplied.] ////// /// public void AddRange(ToolStripItem[] toolStripItems) { if (toolStripItems == null) { throw new ArgumentNullException("toolStripItems"); } if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } // ToolStripDropDown will look for PropertyNames.Items to determine if it needs // to resize itself. using (new LayoutTransaction(this.owner, this.owner, PropertyNames.Items)) { for (int i = 0; i < toolStripItems.Length; i++) { this.Add(toolStripItems[i]); } } } ///[To be supplied.] ////// /// public void AddRange(ToolStripItemCollection toolStripItems) { if (toolStripItems == null) { throw new ArgumentNullException("toolStripItems"); } if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } // ToolStripDropDown will look for PropertyNames.Items to determine if it needs // to resize itself. using (new LayoutTransaction(this.owner, this.owner, PropertyNames.Items)) { int currentCount = toolStripItems.Count; for (int i = 0; i < currentCount; i++) { this.Add(toolStripItems[i]); } } } ///[To be supplied.] ////// /// public bool Contains(ToolStripItem value) { return InnerList.Contains(value); } ///[To be supplied.] ////// /// public virtual void Clear() { if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } if (Count == 0) { return; } ToolStripOverflow overflow = null; if (owner != null && !owner.IsDisposingItems) { owner.SuspendLayout(); overflow = owner.GetOverflow(); if (overflow != null) { overflow.SuspendLayout(); } } try { while (Count != 0) { RemoveAt(Count - 1); } } finally { if (overflow != null) { overflow.ResumeLayout(false); } if (owner != null && !owner.IsDisposingItems) { owner.ResumeLayout(); } } } ///[To be supplied.] ////// /// public virtual bool ContainsKey(string key) { return IsValidIndex(IndexOfKey(key)); } private void CheckCanAddOrInsertItem(ToolStripItem value) { if (value == null) { throw new ArgumentNullException("value"); } if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } ToolStripDropDown dropDown = owner as ToolStripDropDown; if (dropDown != null) { // VSWhidbey 436973: if we're on a dropdown, we can only add non-control host items // as we dont want anything on a dropdown to get keyboard messages in the Internet. if (dropDown.OwnerItem == value) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCircularReference)); } // VSWhidbey 496526: ScrollButton is the only allowed control host as it correctly eats key messages. if (value is ToolStripControlHost && !(value is System.Windows.Forms.ToolStripScrollButton)) { if (dropDown.IsRestrictedWindow) { IntSecurity.AllWindows.Demand(); } } } } ///Returns true if the collection contains an item with the specified key, false otherwise. ////// /// public ToolStripItem[] Find(string key, bool searchAllChildren) { if ((key == null) || (key.Length == 0)) { throw new System.ArgumentNullException("key", SR.GetString(SR.FindKeyMayNotBeEmptyOrNull)); } ArrayList foundItems = FindInternal(key, searchAllChildren, this, new ArrayList()); // Make this a stongly typed collection. ToolStripItem[] stronglyTypedFoundItems = new ToolStripItem[foundItems.Count]; foundItems.CopyTo(stronglyTypedFoundItems, 0); return stronglyTypedFoundItems; } ///Searches for Items by their Name property, builds up an array /// of all the controls that match. /// ////// ///Searches for Items by their Name property, builds up an array list /// of all the items that match. /// ///private ArrayList FindInternal(string key, bool searchAllChildren, ToolStripItemCollection itemsToLookIn, ArrayList foundItems) { if ((itemsToLookIn == null) || (foundItems == null)) { return null; // } try { for (int i = 0; i < itemsToLookIn.Count; i++) { if (itemsToLookIn[i] == null) { continue; } if (WindowsFormsUtils.SafeCompareStrings(itemsToLookIn[i].Name, key, /* ignoreCase = */ true)) { foundItems.Add(itemsToLookIn[i]); } } // Optional recurive search for controls in child collections. if (searchAllChildren) { for (int j = 0; j < itemsToLookIn.Count; j++) { ToolStripDropDownItem item = itemsToLookIn[j] as ToolStripDropDownItem; if (item == null) { continue; } if (item.HasDropDownItems) { // if it has a valid child collecion, append those results to our collection foundItems = FindInternal(key, searchAllChildren, item.DropDownItems, foundItems); } } } } catch (Exception e) { // VSWHIDBEY 80122 make sure we deal with non-critical failures gracefully. if (ClientUtils.IsCriticalException(e)) { throw; } } return foundItems; } public override bool IsReadOnly { get { return this.isReadOnly; }} void IList.Clear() { Clear(); } bool IList.IsFixedSize { get { return InnerList.IsFixedSize; }} bool IList.Contains(object value) { return InnerList.Contains(value); } void IList.RemoveAt(int index) { RemoveAt(index); } void IList.Remove(object value) { Remove(value as ToolStripItem); } int IList.Add(object value) { return Add(value as ToolStripItem); } int IList.IndexOf(object value) { return IndexOf(value as ToolStripItem); } void IList.Insert(int index, object value) { Insert(index, value as ToolStripItem); } /// /// object IList.this[int index] { get { return InnerList[index]; } set { throw new NotSupportedException(SR.GetString(SR.ToolStripCollectionMustInsertAndRemove)); /* InnerList[index] = value; */ } } /// /// /// public void Insert(int index, ToolStripItem value) { CheckCanAddOrInsertItem(value); SetOwner(value); InnerList.Insert(index, value); if (itemsCollection && owner != null) { if (owner.IsHandleCreated){ LayoutTransaction.DoLayout(owner, value, PropertyNames.Parent); } else { // next time we fetch the preferred size, recalc it. CommonProperties.xClearPreferredSizeCache(owner); } owner.OnItemAdded(new ToolStripItemEventArgs(value)); } } ///[To be supplied.] ////// /// public int IndexOf(ToolStripItem value) { return InnerList.IndexOf(value); } ///[To be supplied.] ////// /// public virtual int IndexOfKey(String key) { // Step 0 - Arg validation if ((key == null) || (key.Length == 0)){ return -1; // we dont support empty or null keys. } // step 1 - check the last cached item if (IsValidIndex(lastAccessedIndex)) { if (WindowsFormsUtils.SafeCompareStrings(this[lastAccessedIndex].Name, key, /* ignoreCase = */ true)) { return lastAccessedIndex; } } // step 2 - search for the item for (int i = 0; i < this.Count; i ++) { if (WindowsFormsUtils.SafeCompareStrings(this[i].Name, key, /* ignoreCase = */ true)) { lastAccessedIndex = i; return i; } } // step 3 - we didn't find it. Invalidate the last accessed index and return -1. lastAccessedIndex = -1; return -1; } ///The zero-based index of the first occurrence of value within the entire CollectionBase, if found; otherwise, -1. ////// ///Determines if the index is valid for the collection. ///private bool IsValidIndex(int index) { return ((index >= 0) && (index < this.Count)); } /// /// Do proper cleanup of ownership, etc. /// private void OnAfterRemove(ToolStripItem item) { if (itemsCollection) { ToolStrip parent = null; if (item != null) { parent = item.ParentInternal; item.SetOwner(null); } if (owner != null) { if (!owner.IsDisposingItems) { ToolStripItemEventArgs e = new ToolStripItemEventArgs(item); owner.OnItemRemoved(e); // VSWhidbey 505129 // dont fire the ItemRemoved event for Overflow // it would fire constantly.... instead clear any state if the item // is really being removed from the master collection. if (parent != null && parent != owner) { parent.OnItemVisibleChanged(e, /*performLayout*/false); } } } } } ////// /// public void Remove(ToolStripItem value) { if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } InnerList.Remove(value); OnAfterRemove(value); } ///[To be supplied.] ////// /// public void RemoveAt(int index) { if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } ToolStripItem item = null; if (index < Count && index >= 0) { item = (ToolStripItem)(InnerList[index]); } InnerList.RemoveAt(index); OnAfterRemove(item); } ///[To be supplied.] ////// /// public virtual void RemoveByKey(string key) { if (IsReadOnly) { throw new NotSupportedException(SR.GetString(SR.ToolStripItemCollectionIsReadOnly)); } int index = IndexOfKey(key); if (IsValidIndex(index)) { RemoveAt(index); } } ///Removes the child item with the specified key. ////// /// public void CopyTo(ToolStripItem[] array, int index) { InnerList.CopyTo(array, index); } // internal void MoveItem(ToolStripItem value) { if (value.ParentInternal != null) { int indexOfItem = value.ParentInternal.Items.IndexOf(value); if (indexOfItem >= 0) { value.ParentInternal.Items.RemoveAt(indexOfItem); } } Add(value); } internal void MoveItem(int index, ToolStripItem value) { // if moving to the end - call add instead. if (index == this.Count) { MoveItem(value); return; } if (value.ParentInternal != null) { int indexOfItem = value.ParentInternal.Items.IndexOf(value); if (indexOfItem >= 0) { value.ParentInternal.Items.RemoveAt(indexOfItem); if ((value.ParentInternal == owner) && (index > indexOfItem)) { index--; } } } Insert(index,value); } private void SetOwner(ToolStripItem item) { if (itemsCollection) { if (item != null) { if (item.Owner != null) { item.Owner.Items.Remove(item); } item.SetOwner(owner); if (item.Renderer != null) { item.Renderer.InitializeItem(item); } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HopperCache.cs
- SourceSwitch.cs
- DataRowComparer.cs
- PackWebResponse.cs
- DataBoundControlHelper.cs
- ConstraintManager.cs
- CryptoKeySecurity.cs
- QuaternionConverter.cs
- SqlAggregateChecker.cs
- TreeViewHitTestInfo.cs
- InternalSafeNativeMethods.cs
- NotSupportedException.cs
- PreservationFileWriter.cs
- Visual3D.cs
- Point3DAnimationBase.cs
- SendContent.cs
- ProgressPage.cs
- ExtensionDataObject.cs
- CodeGenerationManager.cs
- RetrieveVirtualItemEventArgs.cs
- IntegerValidatorAttribute.cs
- ProfileSettingsCollection.cs
- FontUnitConverter.cs
- MetadataArtifactLoaderFile.cs
- DbSetClause.cs
- WebBrowserUriTypeConverter.cs
- XPathDocument.cs
- GC.cs
- ErrorHandlerModule.cs
- SafeCancelMibChangeNotify.cs
- SplitterEvent.cs
- StatusCommandUI.cs
- ProxyHelper.cs
- ISAPIApplicationHost.cs
- LineGeometry.cs
- RbTree.cs
- TemplateControlCodeDomTreeGenerator.cs
- DeploymentSection.cs
- IListConverters.cs
- ConnectionStringsExpressionEditor.cs
- StickyNoteContentControl.cs
- parserscommon.cs
- TextRangeEditLists.cs
- AssemblyBuilderData.cs
- TableItemStyle.cs
- WebConfigurationFileMap.cs
- DurationConverter.cs
- TableLayoutStyle.cs
- UiaCoreApi.cs
- CallbackValidatorAttribute.cs
- DesignerAttribute.cs
- OracleParameterCollection.cs
- TraceLog.cs
- TimersDescriptionAttribute.cs
- VirtualizingStackPanel.cs
- ActivityExecutorSurrogate.cs
- BaseDataBoundControl.cs
- ToolStripLocationCancelEventArgs.cs
- Polyline.cs
- ToolBar.cs
- HttpBrowserCapabilitiesBase.cs
- PowerStatus.cs
- ProgressChangedEventArgs.cs
- ResponseStream.cs
- SyndicationContent.cs
- ValidateNames.cs
- DataViewSettingCollection.cs
- VerificationException.cs
- CheckBox.cs
- SpeechRecognitionEngine.cs
- ScriptIgnoreAttribute.cs
- InputLanguageSource.cs
- DuplicateWaitObjectException.cs
- OdbcConnectionFactory.cs
- ConditionalAttribute.cs
- _SafeNetHandles.cs
- ToolTip.cs
- AdapterDictionary.cs
- ExpressionNormalizer.cs
- PermissionSet.cs
- RenderData.cs
- ApplicationBuildProvider.cs
- StyleXamlParser.cs
- AutoResizedEvent.cs
- _AutoWebProxyScriptWrapper.cs
- ContentElement.cs
- RequestCacheValidator.cs
- DefaultTraceListener.cs
- RC2CryptoServiceProvider.cs
- SizeFConverter.cs
- SecurityDocument.cs
- UITypeEditor.cs
- TPLETWProvider.cs
- CodeIdentifier.cs
- AttributeEmitter.cs
- DaylightTime.cs
- EntityDataSourceContainerNameItem.cs
- WorkflowRuntimeEndpoint.cs
- IndexOutOfRangeException.cs
- XsltOutput.cs