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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NamespaceMapping.cs
- DescendantBaseQuery.cs
- MaterialCollection.cs
- ContextMenuAutomationPeer.cs
- CompilationLock.cs
- Encoder.cs
- ScrollChrome.cs
- BulletDecorator.cs
- StickyNoteAnnotations.cs
- PathParser.cs
- TypeFieldSchema.cs
- HtmlShimManager.cs
- DecoderNLS.cs
- PreviewPrintController.cs
- ISSmlParser.cs
- TemplateBindingExpression.cs
- figurelength.cs
- DashStyle.cs
- Misc.cs
- VisualStates.cs
- XmlNamedNodeMap.cs
- XPathNode.cs
- TextElementEnumerator.cs
- ReadOnlyNameValueCollection.cs
- CryptoProvider.cs
- CapabilitiesRule.cs
- entityreference_tresulttype.cs
- SkipQueryOptionExpression.cs
- PropertyExpression.cs
- StylusPlugin.cs
- ItemMap.cs
- TouchDevice.cs
- VScrollProperties.cs
- FactoryGenerator.cs
- SerialPort.cs
- KeyManager.cs
- ServiceChannel.cs
- XamlToRtfParser.cs
- UdpDiscoveryEndpointProvider.cs
- StickyNoteHelper.cs
- TrackingProfileManager.cs
- Animatable.cs
- HostedTcpTransportManager.cs
- EditorPart.cs
- KeyValueConfigurationElement.cs
- PopupRootAutomationPeer.cs
- OperationAbortedException.cs
- RoleGroupCollection.cs
- CriticalFinalizerObject.cs
- NonClientArea.cs
- MenuItemStyle.cs
- PartitionedStream.cs
- RowParagraph.cs
- WindowsListViewItemCheckBox.cs
- FormsAuthenticationUserCollection.cs
- InkCanvasFeedbackAdorner.cs
- IsolatedStoragePermission.cs
- AsnEncodedData.cs
- _SslState.cs
- AuthenticationManager.cs
- ValueTypeFixupInfo.cs
- BaseAsyncResult.cs
- DataGridViewCellParsingEventArgs.cs
- BindingParameterCollection.cs
- PrintControllerWithStatusDialog.cs
- ApplicationTrust.cs
- ProgressBarAutomationPeer.cs
- XmlSchemaComplexContentRestriction.cs
- EditorZoneBase.cs
- AxHost.cs
- PropertyPathWorker.cs
- JsonDataContract.cs
- ContextConfiguration.cs
- WebPartEditorCancelVerb.cs
- Mappings.cs
- WeakReferenceList.cs
- PersonalizationAdministration.cs
- Validator.cs
- MatrixTransform3D.cs
- MorphHelper.cs
- BaseTemplateBuildProvider.cs
- GatewayDefinition.cs
- DbParameterCollection.cs
- UIPermission.cs
- SiblingIterators.cs
- WebMethodAttribute.cs
- AuthenticationConfig.cs
- PtsHost.cs
- LocalClientSecuritySettings.cs
- SoapFault.cs
- IUnknownConstantAttribute.cs
- DrawingAttributes.cs
- _CacheStreams.cs
- SapiRecognizer.cs
- DesignerActionList.cs
- AsyncContentLoadedEventArgs.cs
- FlagsAttribute.cs
- ResolveMatchesMessageCD1.cs
- UnsafeNativeMethods.cs
- InheritablePropertyChangeInfo.cs