Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / EventManager.cs / 1 / EventManager.cs
using System;
using System.Diagnostics;
using MS.Internal.PresentationCore;
using MS.Utility;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows
{
///
/// Allows management of RoutedEvents
///
///
public static class EventManager
{
#region External API
///
/// Registers a
/// with the given parameters
///
///
/// must be
/// unique within the
/// (super class types not considered when talking about
/// uniqueness) and cannot be null
/// must be a
/// type of delegate and cannot be null
/// must be any
/// object type and cannot be null
///
///
/// NOTE: Caller must be the static constructor of the
/// -
/// enforced by stack walk
///
///
///
///
///
///
///
///
///
///
///
///
///
///
/// The new registered
///
///
public static RoutedEvent RegisterRoutedEvent(
string name,
RoutingStrategy routingStrategy,
Type handlerType,
Type ownerType)
{
if (name == null)
{
throw new ArgumentNullException("name");
}
if (routingStrategy != RoutingStrategy.Tunnel &&
routingStrategy != RoutingStrategy.Bubble &&
routingStrategy != RoutingStrategy.Direct)
{
throw new System.ComponentModel.InvalidEnumArgumentException("routingStrategy", (int)routingStrategy, typeof(RoutingStrategy));
}
if (handlerType == null)
{
throw new ArgumentNullException("handlerType");
}
if (ownerType == null)
{
throw new ArgumentNullException("ownerType");
}
if (GlobalEventManager.GetRoutedEventFromName(name, ownerType, false) != null)
{
throw new ArgumentException(SR.Get(SRID.DuplicateEventName, name, ownerType));
}
return GlobalEventManager.RegisterRoutedEvent(name, routingStrategy, handlerType, ownerType);
}
///
/// See overloaded method for details
///
///
/// handledEventsToo defaults to false
/// See overloaded method for details
///
///
///
///
///
public static void RegisterClassHandler(
Type classType,
RoutedEvent routedEvent,
Delegate handler)
{
// HandledEventToo defaults to false
// Call forwarded
RegisterClassHandler(classType, routedEvent, handler, false);
}
///
/// Add a routed event handler to all instances of a
/// particular type inclusive of its sub-class types
///
///
/// The handlers added thus are also known as
/// an class handlers
///
///
/// Class handlers are invoked before the
/// instance handlers. Also see
///
/// Sub-class class handlers are invoked before
/// the super-class class handlers
///
///
/// Input parameters classType,
/// and handler cannot be null
/// handledEventsToo input parameter when false means
/// that listener does not care about already handled events.
/// Hence the handler will not be invoked on the target if
/// the RoutedEvent has already been
///
/// handledEventsToo input parameter when true means
/// that the listener wants to hear about all events even if
/// they have already been handled. Hence the handler will
/// be invoked irrespective of the event being
///
///
///
/// Target object type on which the handler will be invoked
/// when the RoutedEvent is raised
///
///
/// for which the handler
/// is attached
///
///
/// The handler that will be invoked on the target object
/// when the RoutedEvent is raised
///
///
/// Flag indicating whether or not the listener wants to
/// hear about events that have already been handled
///
///
public static void RegisterClassHandler(
Type classType,
RoutedEvent routedEvent,
Delegate handler,
bool handledEventsToo)
{
if (classType == null)
{
throw new ArgumentNullException("classType");
}
if (routedEvent == null)
{
throw new ArgumentNullException("routedEvent");
}
if (handler == null)
{
throw new ArgumentNullException("handler");
}
if (!typeof(UIElement).IsAssignableFrom(classType) &&
!typeof(ContentElement).IsAssignableFrom(classType) &&
!typeof(UIElement3D).IsAssignableFrom(classType))
{
throw new ArgumentException(SR.Get(SRID.ClassTypeIllegal));
}
if (!routedEvent.IsLegalHandler(handler))
{
throw new ArgumentException(SR.Get(SRID.HandlerTypeIllegal));
}
GlobalEventManager.RegisterClassHandler(classType, routedEvent, handler, handledEventsToo);
}
///
/// Returns s
/// that have been registered so far
///
///
/// Also see
///
///
///
///
/// NOTE: There may be more
/// s registered later
///
///
/// The s
/// that have been registered so far
///
///
public static RoutedEvent[] GetRoutedEvents()
{
return GlobalEventManager.GetRoutedEvents();
}
///
/// Finds s for the
/// given
///
///
/// More specifically finds
/// s starting
/// on the
/// and looking at its super class types
///
///
/// If no matches are found, this method returns null
///
///
/// to start
/// search with and follow through to super class types
///
///
/// Matching s
///
///
public static RoutedEvent[] GetRoutedEventsForOwner(Type ownerType)
{
if (ownerType == null)
{
throw new ArgumentNullException("ownerType");
}
return GlobalEventManager.GetRoutedEventsForOwner(ownerType);
}
///
/// Finds a with a
/// matching
/// and
///
///
/// More specifically finds a
/// with a matching
/// starting
/// on the
/// and looking at its super class types
///
///
/// If no matches are found, this method returns null
///
///
/// to be matched
///
///
/// to start
/// search with and follow through to super class types
///
///
/// Matching
///
[FriendAccessAllowed]
internal static RoutedEvent GetRoutedEventFromName(string name, Type ownerType)
{
if (name == null)
{
throw new ArgumentNullException("name");
}
if (ownerType == null)
{
throw new ArgumentNullException("ownerType");
}
return GlobalEventManager.GetRoutedEventFromName(name, ownerType, true);
}
#endregion ExternalAPI
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
using System.Diagnostics;
using MS.Internal.PresentationCore;
using MS.Utility;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows
{
///
/// Allows management of RoutedEvents
///
///
public static class EventManager
{
#region External API
///
/// Registers a
/// with the given parameters
///
///
/// must be
/// unique within the
/// (super class types not considered when talking about
/// uniqueness) and cannot be null
/// must be a
/// type of delegate and cannot be null
/// must be any
/// object type and cannot be null
///
///
/// NOTE: Caller must be the static constructor of the
/// -
/// enforced by stack walk
///
///
///
///
///
///
///
///
///
///
///
///
///
///
/// The new registered
///
///
public static RoutedEvent RegisterRoutedEvent(
string name,
RoutingStrategy routingStrategy,
Type handlerType,
Type ownerType)
{
if (name == null)
{
throw new ArgumentNullException("name");
}
if (routingStrategy != RoutingStrategy.Tunnel &&
routingStrategy != RoutingStrategy.Bubble &&
routingStrategy != RoutingStrategy.Direct)
{
throw new System.ComponentModel.InvalidEnumArgumentException("routingStrategy", (int)routingStrategy, typeof(RoutingStrategy));
}
if (handlerType == null)
{
throw new ArgumentNullException("handlerType");
}
if (ownerType == null)
{
throw new ArgumentNullException("ownerType");
}
if (GlobalEventManager.GetRoutedEventFromName(name, ownerType, false) != null)
{
throw new ArgumentException(SR.Get(SRID.DuplicateEventName, name, ownerType));
}
return GlobalEventManager.RegisterRoutedEvent(name, routingStrategy, handlerType, ownerType);
}
///
/// See overloaded method for details
///
///
/// handledEventsToo defaults to false
/// See overloaded method for details
///
///
///
///
///
public static void RegisterClassHandler(
Type classType,
RoutedEvent routedEvent,
Delegate handler)
{
// HandledEventToo defaults to false
// Call forwarded
RegisterClassHandler(classType, routedEvent, handler, false);
}
///
/// Add a routed event handler to all instances of a
/// particular type inclusive of its sub-class types
///
///
/// The handlers added thus are also known as
/// an class handlers
///
///
/// Class handlers are invoked before the
/// instance handlers. Also see
///
/// Sub-class class handlers are invoked before
/// the super-class class handlers
///
///
/// Input parameters classType,
/// and handler cannot be null
/// handledEventsToo input parameter when false means
/// that listener does not care about already handled events.
/// Hence the handler will not be invoked on the target if
/// the RoutedEvent has already been
///
/// handledEventsToo input parameter when true means
/// that the listener wants to hear about all events even if
/// they have already been handled. Hence the handler will
/// be invoked irrespective of the event being
///
///
///
/// Target object type on which the handler will be invoked
/// when the RoutedEvent is raised
///
///
/// for which the handler
/// is attached
///
///
/// The handler that will be invoked on the target object
/// when the RoutedEvent is raised
///
///
/// Flag indicating whether or not the listener wants to
/// hear about events that have already been handled
///
///
public static void RegisterClassHandler(
Type classType,
RoutedEvent routedEvent,
Delegate handler,
bool handledEventsToo)
{
if (classType == null)
{
throw new ArgumentNullException("classType");
}
if (routedEvent == null)
{
throw new ArgumentNullException("routedEvent");
}
if (handler == null)
{
throw new ArgumentNullException("handler");
}
if (!typeof(UIElement).IsAssignableFrom(classType) &&
!typeof(ContentElement).IsAssignableFrom(classType) &&
!typeof(UIElement3D).IsAssignableFrom(classType))
{
throw new ArgumentException(SR.Get(SRID.ClassTypeIllegal));
}
if (!routedEvent.IsLegalHandler(handler))
{
throw new ArgumentException(SR.Get(SRID.HandlerTypeIllegal));
}
GlobalEventManager.RegisterClassHandler(classType, routedEvent, handler, handledEventsToo);
}
///
/// Returns s
/// that have been registered so far
///
///
/// Also see
///
///
///
///
/// NOTE: There may be more
/// s registered later
///
///
/// The s
/// that have been registered so far
///
///
public static RoutedEvent[] GetRoutedEvents()
{
return GlobalEventManager.GetRoutedEvents();
}
///
/// Finds s for the
/// given
///
///
/// More specifically finds
/// s starting
/// on the
/// and looking at its super class types
///
///
/// If no matches are found, this method returns null
///
///
/// to start
/// search with and follow through to super class types
///
///
/// Matching s
///
///
public static RoutedEvent[] GetRoutedEventsForOwner(Type ownerType)
{
if (ownerType == null)
{
throw new ArgumentNullException("ownerType");
}
return GlobalEventManager.GetRoutedEventsForOwner(ownerType);
}
///
/// Finds a with a
/// matching
/// and
///
///
/// More specifically finds a
/// with a matching
/// starting
/// on the
/// and looking at its super class types
///
///
/// If no matches are found, this method returns null
///
///
/// to be matched
///
///
/// to start
/// search with and follow through to super class types
///
///
/// Matching
///
[FriendAccessAllowed]
internal static RoutedEvent GetRoutedEventFromName(string name, Type ownerType)
{
if (name == null)
{
throw new ArgumentNullException("name");
}
if (ownerType == null)
{
throw new ArgumentNullException("ownerType");
}
return GlobalEventManager.GetRoutedEventFromName(name, ownerType, true);
}
#endregion ExternalAPI
}
}
// 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
- TileModeValidation.cs
- Listen.cs
- CursorConverter.cs
- XLinq.cs
- DictionaryContent.cs
- IpcServerChannel.cs
- ZipQueryOperator.cs
- TagMapInfo.cs
- ExtenderProvidedPropertyAttribute.cs
- RemotingAttributes.cs
- WindowsFont.cs
- EntityStoreSchemaGenerator.cs
- FormViewRow.cs
- Effect.cs
- ListenerUnsafeNativeMethods.cs
- LockRecursionException.cs
- Point3D.cs
- DataGridCellAutomationPeer.cs
- ConfigDefinitionUpdates.cs
- OracleEncoding.cs
- BuildProvider.cs
- RenderingEventArgs.cs
- SoapHeaders.cs
- TypedReference.cs
- DocumentReference.cs
- FullTrustAssembliesSection.cs
- RecordManager.cs
- RowToFieldTransformer.cs
- webbrowsersite.cs
- VisualBasicSettingsConverter.cs
- TransformGroup.cs
- TypeNameConverter.cs
- FrameworkContentElement.cs
- Columns.cs
- NetTcpBindingCollectionElement.cs
- XmlSchemaFacet.cs
- AnimationStorage.cs
- DetailsViewUpdatedEventArgs.cs
- EventDescriptorCollection.cs
- GifBitmapEncoder.cs
- ArraySortHelper.cs
- HtmlProps.cs
- ListViewInsertEventArgs.cs
- TreeIterators.cs
- Rethrow.cs
- LinqDataSourceView.cs
- GifBitmapDecoder.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- RichListBox.cs
- CodeArrayIndexerExpression.cs
- ProgressBar.cs
- BoundColumn.cs
- SizeFConverter.cs
- KeyboardEventArgs.cs
- Binding.cs
- FaultDescription.cs
- TextViewElement.cs
- XmlKeywords.cs
- TypeUtil.cs
- NavigationWindowAutomationPeer.cs
- DropShadowBitmapEffect.cs
- ResourcePermissionBaseEntry.cs
- UserControlDesigner.cs
- ActivityDesignerAccessibleObject.cs
- SubMenuStyle.cs
- KnownColorTable.cs
- IndexedString.cs
- ScalarType.cs
- WizardPanelChangingEventArgs.cs
- Version.cs
- HuffmanTree.cs
- LinkLabel.cs
- ProxySimple.cs
- JsonDataContract.cs
- JoinCqlBlock.cs
- GridLength.cs
- PropertyGridEditorPart.cs
- QilLiteral.cs
- ExtenderControl.cs
- MutableAssemblyCacheEntry.cs
- BufferedReadStream.cs
- DetailsViewPageEventArgs.cs
- CreateUserWizardStep.cs
- FlagsAttribute.cs
- HandledEventArgs.cs
- KnownTypeHelper.cs
- TdsParserSafeHandles.cs
- FaultContext.cs
- TypeConverterValueSerializer.cs
- RowToParametersTransformer.cs
- EditableLabelControl.cs
- EmptyElement.cs
- CodeDomSerializerBase.cs
- BidPrivateBase.cs
- DrawListViewColumnHeaderEventArgs.cs
- CreateParams.cs
- FrameworkContentElement.cs
- PenThreadPool.cs
- XmlSerializerVersionAttribute.cs
- SqlCommandBuilder.cs