Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / HtmlToClrEventProxy.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TableCell.cs
- SourceItem.cs
- Byte.cs
- AuthenticationConfig.cs
- Int32CollectionConverter.cs
- CompareInfo.cs
- ListViewItem.cs
- SelectedDatesCollection.cs
- TypeSource.cs
- HttpPostedFile.cs
- SafeNativeMethods.cs
- ZipIOModeEnforcingStream.cs
- Overlapped.cs
- webclient.cs
- RangeContentEnumerator.cs
- SoapElementAttribute.cs
- ExternalFile.cs
- SqlTopReducer.cs
- BmpBitmapDecoder.cs
- RichTextBoxDesigner.cs
- HttpListener.cs
- FormViewModeEventArgs.cs
- Scene3D.cs
- ObjectCacheSettings.cs
- XmlAttribute.cs
- ThreadSafeList.cs
- Constants.cs
- PageContentAsyncResult.cs
- ResourceDictionaryCollection.cs
- CustomWebEventKey.cs
- PEFileEvidenceFactory.cs
- ToolStripContainerActionList.cs
- ToolStripSplitButton.cs
- Rotation3DAnimationUsingKeyFrames.cs
- SafeEventLogWriteHandle.cs
- ThreadAbortException.cs
- Mapping.cs
- CompilationUtil.cs
- EntitySetDataBindingList.cs
- TypeReference.cs
- HtmlInputRadioButton.cs
- XmlTypeMapping.cs
- FileInfo.cs
- Int32Rect.cs
- PrintDocument.cs
- SecurityState.cs
- ApplicationId.cs
- KeyTimeConverter.cs
- ServiceOperationUIEditor.cs
- QuaternionAnimation.cs
- FormatterConverter.cs
- ToolStripOverflowButton.cs
- __FastResourceComparer.cs
- HttpCachePolicyElement.cs
- ImageBrush.cs
- MiniLockedBorderGlyph.cs
- DynamicPropertyReader.cs
- SecureEnvironment.cs
- Group.cs
- CmsInterop.cs
- CollectionConverter.cs
- HtmlWindowCollection.cs
- ColumnCollectionEditor.cs
- ItemCollection.cs
- TypedReference.cs
- DataGridRelationshipRow.cs
- AtlasWeb.Designer.cs
- ExtendedTransformFactory.cs
- ShapeTypeface.cs
- ActiveXHost.cs
- ListManagerBindingsCollection.cs
- CursorEditor.cs
- ModelTreeEnumerator.cs
- ModelUIElement3D.cs
- SQLInt16Storage.cs
- ObjectAnimationUsingKeyFrames.cs
- SecurityException.cs
- ServiceInfo.cs
- CompositionCommandSet.cs
- Matrix3D.cs
- xmlsaver.cs
- CurrentTimeZone.cs
- ColorKeyFrameCollection.cs
- DataGridHeaderBorder.cs
- IndexerHelper.cs
- XmlSchemaProviderAttribute.cs
- XmlObjectSerializerContext.cs
- SmiContext.cs
- ToolTip.cs
- StrokeCollectionConverter.cs
- TypeInfo.cs
- DnsPermission.cs
- CharEntityEncoderFallback.cs
- SystemTcpStatistics.cs
- OperationCanceledException.cs
- SQLByteStorage.cs
- ManipulationLogic.cs
- ContentIterators.cs
- SparseMemoryStream.cs
- FormView.cs