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
- Panel.cs
- Filter.cs
- WebScriptEndpointElement.cs
- OLEDB_Util.cs
- PaintValueEventArgs.cs
- SchemeSettingElementCollection.cs
- CheckedPointers.cs
- FlowDecisionLabelFeature.cs
- OleDbReferenceCollection.cs
- HiddenFieldPageStatePersister.cs
- arabicshape.cs
- TempEnvironment.cs
- StreamAsIStream.cs
- DocumentOrderQuery.cs
- TypeConverterMarkupExtension.cs
- Int32EqualityComparer.cs
- AnonymousIdentificationSection.cs
- ThreadInterruptedException.cs
- DebugHandleTracker.cs
- ColorContextHelper.cs
- ListViewItemMouseHoverEvent.cs
- PDBReader.cs
- RawStylusInput.cs
- CharacterMetricsDictionary.cs
- ConsumerConnectionPointCollection.cs
- Stroke2.cs
- CompilerParameters.cs
- TransferRequestHandler.cs
- NavigatorInput.cs
- SyndicationDeserializer.cs
- RegistryKey.cs
- JavaScriptObjectDeserializer.cs
- LocalFileSettingsProvider.cs
- COAUTHINFO.cs
- TimeSpanValidator.cs
- CodeIndexerExpression.cs
- PropertyEmitter.cs
- ObjectDataSourceChooseMethodsPanel.cs
- panel.cs
- SecondaryViewProvider.cs
- OpenFileDialog.cs
- CredentialCache.cs
- ConnectivityStatus.cs
- RootProfilePropertySettingsCollection.cs
- CancellableEnumerable.cs
- TextureBrush.cs
- WrapPanel.cs
- CancelEventArgs.cs
- WebPartConnectVerb.cs
- CodeBlockBuilder.cs
- Stroke.cs
- ToolStrip.cs
- CookielessData.cs
- Baml2006KnownTypes.cs
- NetworkInterface.cs
- SoapMessage.cs
- ToolboxSnapDragDropEventArgs.cs
- AnnotationResourceChangedEventArgs.cs
- AccessDataSource.cs
- ButtonDesigner.cs
- SqlClientWrapperSmiStreamChars.cs
- DeferredBinaryDeserializerExtension.cs
- XmlLangPropertyAttribute.cs
- AutomationAttributeInfo.cs
- KeyGestureValueSerializer.cs
- LogLogRecord.cs
- SqlNodeTypeOperators.cs
- PropertyGridView.cs
- OrderedDictionaryStateHelper.cs
- QilNode.cs
- LayoutTableCell.cs
- IncrementalReadDecoders.cs
- ButtonChrome.cs
- TextSimpleMarkerProperties.cs
- PersistenceTypeAttribute.cs
- ClientData.cs
- SQLByteStorage.cs
- CodeLinePragma.cs
- SqlTransaction.cs
- SqlInternalConnectionTds.cs
- ClientConvert.cs
- WebSysDefaultValueAttribute.cs
- MonthCalendar.cs
- UserMapPath.cs
- RealizationDrawingContextWalker.cs
- ValidatorCompatibilityHelper.cs
- GeometryConverter.cs
- TerminateDesigner.cs
- UpDownEvent.cs
- APCustomTypeDescriptor.cs
- QilReference.cs
- VariableAction.cs
- Command.cs
- dbenumerator.cs
- Expressions.cs
- Rect.cs
- dsa.cs
- BuildManager.cs
- Pair.cs
- ExtendedPropertyDescriptor.cs