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
- SqlUserDefinedTypeAttribute.cs
- HttpHandlerAction.cs
- SqlClientFactory.cs
- SqlConnectionFactory.cs
- ForceCopyBuildProvider.cs
- FixedTextView.cs
- BinaryReader.cs
- WmlPanelAdapter.cs
- InstanceCompleteException.cs
- FileRecordSequenceCompletedAsyncResult.cs
- GradientBrush.cs
- BigIntegerStorage.cs
- SyndicationPerson.cs
- PeerValidationBehavior.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- EditCommandColumn.cs
- ContentWrapperAttribute.cs
- FilteredSchemaElementLookUpTable.cs
- DbProviderConfigurationHandler.cs
- IntSumAggregationOperator.cs
- BaseCollection.cs
- TextBoxLine.cs
- MouseWheelEventArgs.cs
- MaxMessageSizeStream.cs
- DocumentsTrace.cs
- CompiledXpathExpr.cs
- ExpressionBuilder.cs
- SingleAnimationBase.cs
- NativeWindow.cs
- CheckableControlBaseAdapter.cs
- SetStoryboardSpeedRatio.cs
- EntityDataSourceUtil.cs
- basecomparevalidator.cs
- securitymgrsite.cs
- WebPermission.cs
- AnchorEditor.cs
- TypeUnloadedException.cs
- StylusPlugin.cs
- NonNullItemCollection.cs
- InputScopeManager.cs
- DataGridViewComboBoxCell.cs
- WindowsRichEditRange.cs
- TextPointerBase.cs
- ProgressBar.cs
- AsymmetricKeyExchangeFormatter.cs
- CompositeScriptReferenceEventArgs.cs
- IpcChannelHelper.cs
- IApplicationTrustManager.cs
- ComplexPropertyEntry.cs
- TokenizerHelper.cs
- WizardStepCollectionEditor.cs
- RtfToken.cs
- TextOutput.cs
- SectionVisual.cs
- FrameworkContentElement.cs
- PathSegmentCollection.cs
- StateWorkerRequest.cs
- RefreshEventArgs.cs
- KeyTime.cs
- ElapsedEventArgs.cs
- Publisher.cs
- TraceXPathNavigator.cs
- Math.cs
- Pts.cs
- ListMarkerLine.cs
- WmpBitmapDecoder.cs
- UTF32Encoding.cs
- TdsParserStateObject.cs
- SafeArrayRankMismatchException.cs
- DesignerCapabilities.cs
- LockCookie.cs
- Image.cs
- TileBrush.cs
- ClientSettingsSection.cs
- AssemblyAssociatedContentFileAttribute.cs
- SQLByte.cs
- WinFormsSpinner.cs
- BlobPersonalizationState.cs
- CompModSwitches.cs
- StandardOleMarshalObject.cs
- TextSpanModifier.cs
- LogManagementAsyncResult.cs
- WebPartConnectionsDisconnectVerb.cs
- DependencyPropertyValueSerializer.cs
- FileUpload.cs
- MeshGeometry3D.cs
- DynamicControl.cs
- ConsoleTraceListener.cs
- AssemblyHash.cs
- TextChangedEventArgs.cs
- SqlDataSourceSelectingEventArgs.cs
- Message.cs
- SoundPlayerAction.cs
- DummyDataSource.cs
- Frame.cs
- IdentityHolder.cs
- ColumnReorderedEventArgs.cs
- StoreConnection.cs
- ComponentChangedEvent.cs
- SmiContext.cs