Code:
/ FX-1434 / FX-1434 / 1.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
- RSAOAEPKeyExchangeFormatter.cs
- keycontainerpermission.cs
- DataDocumentXPathNavigator.cs
- UrlEncodedParameterWriter.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- DBPropSet.cs
- SafeArchiveContext.cs
- SamlEvidence.cs
- HorizontalAlignConverter.cs
- FloaterBaseParagraph.cs
- HostVisual.cs
- NotSupportedException.cs
- Track.cs
- RootAction.cs
- CommandSet.cs
- Update.cs
- PropertyTabChangedEvent.cs
- FilteredAttributeCollection.cs
- AccessDataSourceView.cs
- _BaseOverlappedAsyncResult.cs
- PropertyGridEditorPart.cs
- Rotation3DAnimationBase.cs
- ReflectionUtil.cs
- AsyncSerializedWorker.cs
- CursorInteropHelper.cs
- VirtualDirectoryMapping.cs
- DateTimeOffset.cs
- BaseDataBoundControl.cs
- ComponentCommands.cs
- RoutingService.cs
- QuaternionIndependentAnimationStorage.cs
- ApplicationFileCodeDomTreeGenerator.cs
- Blend.cs
- TextWriter.cs
- ThrowHelper.cs
- UrlRoutingModule.cs
- ObjectDataSourceMethodEventArgs.cs
- XComponentModel.cs
- NamedPipeTransportBindingElement.cs
- SafeCertificateContext.cs
- ImageIndexConverter.cs
- Page.cs
- HwndAppCommandInputProvider.cs
- AgileSafeNativeMemoryHandle.cs
- FrameworkElementFactoryMarkupObject.cs
- PropertyFilterAttribute.cs
- _SSPIWrapper.cs
- TabletCollection.cs
- UIElement3D.cs
- DateTimeConstantAttribute.cs
- GC.cs
- ExtractedStateEntry.cs
- SmtpAuthenticationManager.cs
- RecognizedAudio.cs
- ContextMenuStrip.cs
- NamespaceDisplayAutomationPeer.cs
- ComboBoxAutomationPeer.cs
- PageHandlerFactory.cs
- AsyncCompletedEventArgs.cs
- Timeline.cs
- storagemappingitemcollection.viewdictionary.cs
- NumberSubstitution.cs
- TextEffectCollection.cs
- NonSerializedAttribute.cs
- TextEditorTables.cs
- DataListCommandEventArgs.cs
- OperatingSystem.cs
- SqlWebEventProvider.cs
- TreeViewItemAutomationPeer.cs
- CultureInfoConverter.cs
- ToolStripContainerActionList.cs
- DesignTimeDataBinding.cs
- HWStack.cs
- DataContract.cs
- StyleCollection.cs
- StoreContentChangedEventArgs.cs
- SyndicationItemFormatter.cs
- RightsManagementPermission.cs
- ListBindableAttribute.cs
- LogLogRecord.cs
- InvalidCastException.cs
- TypeResolvingOptionsAttribute.cs
- ObjectItemCachedAssemblyLoader.cs
- CallSiteBinder.cs
- ApplicationFileCodeDomTreeGenerator.cs
- _HeaderInfoTable.cs
- OutputScopeManager.cs
- CompressedStack.cs
- DllNotFoundException.cs
- SspiSecurityTokenParameters.cs
- Point4DConverter.cs
- SamlDoNotCacheCondition.cs
- ParameterCollection.cs
- WebPartPersonalization.cs
- StrokeNodeOperations2.cs
- VersionPair.cs
- ProtectedConfigurationProviderCollection.cs
- Matrix3D.cs
- ObjectDisposedException.cs
- ZipIOExtraFieldElement.cs