Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / CompMod / System / ComponentModel / EventHandlerList.cs / 1 / EventHandlerList.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel { using System; using System.Diagnostics.CodeAnalysis; using System.Security.Permissions; ////// [HostProtection(SharedState = true)] public sealed class EventHandlerList : IDisposable { ListEntry head; Component parent; ///Provides a simple list of delegates. This class cannot be inherited. ////// Creates a new event handler list. /// [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] public EventHandlerList() { } ////// Creates a new event handler list. The parent component is used to check the component's /// CanRaiseEvents property. /// [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] internal EventHandlerList(Component parent) { this.parent = parent; } ////// public Delegate this[object key] { [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] get { ListEntry e = null; if (parent == null || parent.CanRaiseEventsInternal) { e = Find(key); } if (e != null) { return e.handler; } else { return null; } } set { ListEntry e = Find(key); if (e != null) { e.handler = value; } else { head = new ListEntry(key, value, head); } } } ///Gets or sets the delegate for the specified key. ////// [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] public void AddHandler(object key, Delegate value) { ListEntry e = Find(key); if (e != null) { e.handler = Delegate.Combine(e.handler, value); } else { head = new ListEntry(key, value, head); } } ///[To be supplied.] ///allows you to add a list of events to this list public void AddHandlers(EventHandlerList listToAddFrom) { ListEntry currentListEntry = listToAddFrom.head; while (currentListEntry != null) { AddHandler(currentListEntry.key, currentListEntry.handler); currentListEntry = currentListEntry.next; } } ////// public void Dispose() { head = null; } private ListEntry Find(object key) { ListEntry found = head; while (found != null) { if (found.key == key) { break; } found = found.next; } return found; } ///[To be supplied.] ////// [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] public void RemoveHandler(object key, Delegate value) { ListEntry e = Find(key); if (e != null) { e.handler = Delegate.Remove(e.handler, value); } // else... no error for removal of non-existant delegate // } private sealed class ListEntry { internal ListEntry next; internal object key; internal Delegate handler; public ListEntry(object key, Delegate handler, ListEntry next) { this.next = next; this.key = key; this.handler = handler; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //[To be supplied.] ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel { using System; using System.Diagnostics.CodeAnalysis; using System.Security.Permissions; ////// [HostProtection(SharedState = true)] public sealed class EventHandlerList : IDisposable { ListEntry head; Component parent; ///Provides a simple list of delegates. This class cannot be inherited. ////// Creates a new event handler list. /// [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] public EventHandlerList() { } ////// Creates a new event handler list. The parent component is used to check the component's /// CanRaiseEvents property. /// [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] internal EventHandlerList(Component parent) { this.parent = parent; } ////// public Delegate this[object key] { [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] get { ListEntry e = null; if (parent == null || parent.CanRaiseEventsInternal) { e = Find(key); } if (e != null) { return e.handler; } else { return null; } } set { ListEntry e = Find(key); if (e != null) { e.handler = value; } else { head = new ListEntry(key, value, head); } } } ///Gets or sets the delegate for the specified key. ////// [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] public void AddHandler(object key, Delegate value) { ListEntry e = Find(key); if (e != null) { e.handler = Delegate.Combine(e.handler, value); } else { head = new ListEntry(key, value, head); } } ///[To be supplied.] ///allows you to add a list of events to this list public void AddHandlers(EventHandlerList listToAddFrom) { ListEntry currentListEntry = listToAddFrom.head; while (currentListEntry != null) { AddHandler(currentListEntry.key, currentListEntry.handler); currentListEntry = currentListEntry.next; } } ////// public void Dispose() { head = null; } private ListEntry Find(object key) { ListEntry found = head; while (found != null) { if (found.key == key) { break; } found = found.next; } return found; } ///[To be supplied.] ////// [SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands")] public void RemoveHandler(object key, Delegate value) { ListEntry e = Find(key); if (e != null) { e.handler = Delegate.Remove(e.handler, value); } // else... no error for removal of non-existant delegate // } private sealed class ListEntry { internal ListEntry next; internal object key; internal Delegate handler; public ListEntry(object key, Delegate handler, ListEntry next) { this.next = next; this.key = key; this.handler = handler; } } } } // 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
- TabRenderer.cs
- CheckBoxBaseAdapter.cs
- RegisteredExpandoAttribute.cs
- CommunicationException.cs
- FtpWebResponse.cs
- DocumentViewerBaseAutomationPeer.cs
- HtmlSelect.cs
- ChangeDirector.cs
- PrimaryKeyTypeConverter.cs
- CallbackTimeoutsBehavior.cs
- UnsafeMethods.cs
- FileInfo.cs
- GridViewColumnCollection.cs
- ContextBase.cs
- DataGridViewSelectedCellCollection.cs
- TimeoutException.cs
- XhtmlBasicCalendarAdapter.cs
- MasterPageBuildProvider.cs
- Int32RectValueSerializer.cs
- PreservationFileWriter.cs
- WebBrowserSiteBase.cs
- UIElementPropertyUndoUnit.cs
- EllipticalNodeOperations.cs
- ZipIOBlockManager.cs
- Policy.cs
- Metafile.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- LinqDataSourceStatusEventArgs.cs
- ObjRef.cs
- TreeViewBindingsEditorForm.cs
- CursorEditor.cs
- HttpContextBase.cs
- CommonXSendMessage.cs
- BaseValidator.cs
- MouseActionValueSerializer.cs
- SecurityDescriptor.cs
- RIPEMD160.cs
- InternalSafeNativeMethods.cs
- FontFamily.cs
- FlatButtonAppearance.cs
- InkCanvasInnerCanvas.cs
- DetailsViewDesigner.cs
- HelpEvent.cs
- HttpChannelListener.cs
- MemberCollection.cs
- DesignSurfaceEvent.cs
- ScaleTransform3D.cs
- SchemaTypeEmitter.cs
- CompilerGlobalScopeAttribute.cs
- EventLogPropertySelector.cs
- DataGridTableCollection.cs
- DesignerTextViewAdapter.cs
- DateTimeStorage.cs
- MultiByteCodec.cs
- _DisconnectOverlappedAsyncResult.cs
- MenuItem.cs
- HorizontalAlignConverter.cs
- ArrayElementGridEntry.cs
- DataGridViewControlCollection.cs
- BindingWorker.cs
- HyperLinkDesigner.cs
- RayMeshGeometry3DHitTestResult.cs
- View.cs
- TextFormatterImp.cs
- QilStrConcatenator.cs
- ProxyWebPartManager.cs
- DockingAttribute.cs
- SingleAnimationBase.cs
- HttpSocketManager.cs
- DbDataReader.cs
- XamlTreeBuilder.cs
- GACIdentityPermission.cs
- SafeCloseHandleCritical.cs
- AliasGenerator.cs
- CodeDOMProvider.cs
- TextRunCacheImp.cs
- ImageAnimator.cs
- TraceContextEventArgs.cs
- CompiledRegexRunner.cs
- ReflectionUtil.cs
- DbConnectionPoolGroup.cs
- BackStopAuthenticationModule.cs
- FullTrustAssembly.cs
- DataGridViewEditingControlShowingEventArgs.cs
- MailDefinition.cs
- DataGridViewBand.cs
- ScalarConstant.cs
- ButtonColumn.cs
- TemplateField.cs
- DTCTransactionManager.cs
- SystemDiagnosticsSection.cs
- ThreadAttributes.cs
- FixedSOMElement.cs
- XmlAttributeAttribute.cs
- TransactionFlowBindingElementImporter.cs
- NumericUpDown.cs
- ImageListUtils.cs
- SqlUserDefinedAggregateAttribute.cs
- MemberDescriptor.cs
- ILGenerator.cs