Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / HtmlToClrEventProxy.cs / 1 / HtmlToClrEventProxy.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
using System.Security.Permissions;
using System.Security;
using System.Runtime.InteropServices;
using System.Net;
using System.Globalization;
using System.Collections;
using System.Reflection;
namespace System.Windows.Forms {
///
/// This class is here for IHTML*3.AttachHandler style eventing.
/// We need a way of routing requests for DISPID(0) to a particular CLR event without creating
/// a public class. In order to accomplish this we implement IReflect and handle InvokeMethod
/// to call back on a CLR event handler.
///
internal class HtmlToClrEventProxy : IReflect {
private EventHandler eventHandler;
private IReflect typeIReflectImplementation;
private object sender = null;
private string eventName;
public HtmlToClrEventProxy(object sender, string eventName, EventHandler eventHandler) {
this.eventHandler = eventHandler;
this.eventName = eventName;
Type htmlToClrEventProxyType = typeof(HtmlToClrEventProxy);
typeIReflectImplementation = htmlToClrEventProxyType as IReflect;
}
public string EventName {
get { return eventName; }
}
[DispId(0)]
public void OnHtmlEvent() {
InvokeClrEvent();
}
private void InvokeClrEvent() {
if (eventHandler != null) {
eventHandler(sender, EventArgs.Empty);
}
}
#region IReflect
Type IReflect.UnderlyingSystemType {
get {
return typeIReflectImplementation.UnderlyingSystemType;
}
}
// Methods
System.Reflection.FieldInfo IReflect.GetField(string name, System.Reflection.BindingFlags bindingAttr) {
return typeIReflectImplementation.GetField(name, bindingAttr);
}
System.Reflection.FieldInfo[] IReflect.GetFields(System.Reflection.BindingFlags bindingAttr) {
return typeIReflectImplementation.GetFields(bindingAttr);
}
System.Reflection.MemberInfo[] IReflect.GetMember(string name, System.Reflection.BindingFlags bindingAttr) {
return typeIReflectImplementation.GetMember(name, bindingAttr);
}
System.Reflection.MemberInfo[] IReflect.GetMembers(System.Reflection.BindingFlags bindingAttr){
return typeIReflectImplementation.GetMembers(bindingAttr);
}
System.Reflection.MethodInfo IReflect.GetMethod(string name, System.Reflection.BindingFlags bindingAttr) {
return typeIReflectImplementation.GetMethod(name, bindingAttr);
}
System.Reflection.MethodInfo IReflect.GetMethod(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type[] types, System.Reflection.ParameterModifier[] modifiers) {
return typeIReflectImplementation.GetMethod(name, bindingAttr, binder, types, modifiers);
}
System.Reflection.MethodInfo[] IReflect.GetMethods(System.Reflection.BindingFlags bindingAttr) {
return typeIReflectImplementation.GetMethods(bindingAttr);
}
System.Reflection.PropertyInfo[] IReflect.GetProperties(System.Reflection.BindingFlags bindingAttr) {
return typeIReflectImplementation.GetProperties(bindingAttr);
}
System.Reflection.PropertyInfo IReflect.GetProperty(string name, System.Reflection.BindingFlags bindingAttr) {
return typeIReflectImplementation.GetProperty(name, bindingAttr);
}
System.Reflection.PropertyInfo IReflect.GetProperty(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers) {
return typeIReflectImplementation.GetProperty(name, bindingAttr, binder, returnType, types, modifiers);
}
// InvokeMember:
// If we get a call for DISPID=0, fire the CLR event.
//
object IReflect.InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) {
//
if (name == "[DISPID=0]") {
// we know we're getting called back to fire the event - translate this now into a CLR event.
OnHtmlEvent();
// since there's no return value for void, return null.
return null;
}
else {
return typeIReflectImplementation.InvokeMember(name, invokeAttr, binder, target, args, modifiers, culture, namedParameters);
}
}
#endregion
}
}
// 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
- DefaultEventAttribute.cs
- Int64AnimationBase.cs
- XPathNode.cs
- VariableElement.cs
- XhtmlTextWriter.cs
- FlowLayoutSettings.cs
- JournalEntry.cs
- FormViewModeEventArgs.cs
- BridgeDataReader.cs
- CrossSiteScriptingValidation.cs
- Int16AnimationBase.cs
- RectAnimation.cs
- SectionVisual.cs
- StyleHelper.cs
- DataServiceProviderMethods.cs
- securitycriticaldataformultiplegetandset.cs
- TypedDatasetGenerator.cs
- NegationPusher.cs
- TextEndOfParagraph.cs
- SafeRightsManagementSessionHandle.cs
- RegisteredHiddenField.cs
- StructuredProperty.cs
- MenuItemStyleCollection.cs
- ConnectionManagementSection.cs
- DeploymentExceptionMapper.cs
- WebRequestModulesSection.cs
- MembershipPasswordException.cs
- UserPrincipalNameElement.cs
- XmlElementList.cs
- MouseEvent.cs
- InheritanceRules.cs
- ListView.cs
- RestClientProxyHandler.cs
- CodeSnippetCompileUnit.cs
- Clock.cs
- IndicCharClassifier.cs
- FatalException.cs
- DeadCharTextComposition.cs
- GrammarBuilderWildcard.cs
- ClientConfigurationHost.cs
- AppDomainFactory.cs
- PatternMatcher.cs
- ConnectionManagementElement.cs
- InertiaRotationBehavior.cs
- XpsResource.cs
- Animatable.cs
- PositiveTimeSpanValidatorAttribute.cs
- NotFiniteNumberException.cs
- RegisteredExpandoAttribute.cs
- RegionData.cs
- versioninfo.cs
- UniqueConstraint.cs
- GlyphInfoList.cs
- GradientStop.cs
- DetailsViewInsertedEventArgs.cs
- StaticExtensionConverter.cs
- TextParagraphView.cs
- TransformConverter.cs
- RichTextBoxAutomationPeer.cs
- BoundColumn.cs
- NotFiniteNumberException.cs
- GlyphRunDrawing.cs
- SettingsContext.cs
- PageClientProxyGenerator.cs
- OleAutBinder.cs
- HwndSubclass.cs
- MsmqNonTransactedPoisonHandler.cs
- DecimalStorage.cs
- Nullable.cs
- StringResourceManager.cs
- CanExecuteRoutedEventArgs.cs
- PagesSection.cs
- CompoundFileReference.cs
- TraceContextEventArgs.cs
- BitmapEffectRenderDataResource.cs
- WarningException.cs
- HtmlElementCollection.cs
- DependencyObjectPropertyDescriptor.cs
- IncrementalCompileAnalyzer.cs
- DataGridCheckBoxColumn.cs
- WsatEtwTraceListener.cs
- GeneralTransform.cs
- FrameworkContextData.cs
- WizardDesigner.cs
- CodeParameterDeclarationExpressionCollection.cs
- SHA512Managed.cs
- XmlTextWriter.cs
- HttpWebRequest.cs
- CollectionChangeEventArgs.cs
- TextAdaptor.cs
- OutKeywords.cs
- FreezableOperations.cs
- ReachIDocumentPaginatorSerializer.cs
- Random.cs
- EFColumnProvider.cs
- DataTableNewRowEvent.cs
- HtmlImage.cs
- Int32CollectionConverter.cs
- RegexCharClass.cs
- ReceiveCompletedEventArgs.cs