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
- TextBox.cs
- RectAnimationUsingKeyFrames.cs
- StateDesigner.Layouts.cs
- PartitionResolver.cs
- DataPager.cs
- FontSource.cs
- DefaultMergeHelper.cs
- CssStyleCollection.cs
- StateManager.cs
- Guid.cs
- InitializationEventAttribute.cs
- APCustomTypeDescriptor.cs
- SafeEventLogReadHandle.cs
- XsdDuration.cs
- FlatButtonAppearance.cs
- Material.cs
- PageParserFilter.cs
- AutomationElementCollection.cs
- PropertyStore.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- EpmAttributeNameBuilder.cs
- _ProxyRegBlob.cs
- DataException.cs
- SecurityUtils.cs
- DynamicDataResources.Designer.cs
- LinqDataSourceInsertEventArgs.cs
- Timeline.cs
- KeyValuePair.cs
- ScrollChrome.cs
- RequestChannelBinder.cs
- EastAsianLunisolarCalendar.cs
- HttpStreamFormatter.cs
- ServiceOperationParameter.cs
- QueryableDataSourceView.cs
- SQLInt16.cs
- Selection.cs
- InvokeGenerator.cs
- DBDataPermissionAttribute.cs
- SettingsBase.cs
- HttpWebRequestElement.cs
- ContentElement.cs
- Parameter.cs
- TreeViewEvent.cs
- FormatterServicesNoSerializableCheck.cs
- SQLString.cs
- XmlSignatureProperties.cs
- DataRecordObjectView.cs
- DesignerActionKeyboardBehavior.cs
- Internal.cs
- MaterialCollection.cs
- SqlMetaData.cs
- WebRequestModuleElement.cs
- ConfigXmlSignificantWhitespace.cs
- propertytag.cs
- DataGridRow.cs
- TimeStampChecker.cs
- WpfKnownMemberInvoker.cs
- PermissionListSet.cs
- InkCollectionBehavior.cs
- ReachDocumentReferenceCollectionSerializer.cs
- ListDictionaryInternal.cs
- CollectionsUtil.cs
- MouseCaptureWithinProperty.cs
- CommandHelpers.cs
- WebScriptServiceHostFactory.cs
- DecimalConverter.cs
- LoaderAllocator.cs
- DataGridViewBindingCompleteEventArgs.cs
- LocalizableAttribute.cs
- ArgumentOutOfRangeException.cs
- DTCTransactionManager.cs
- Int32RectValueSerializer.cs
- EntityDataSourceState.cs
- RegisteredExpandoAttribute.cs
- TreeIterators.cs
- DataGridViewRowPostPaintEventArgs.cs
- Cursors.cs
- BitmapFrame.cs
- CodeTypeOfExpression.cs
- FastEncoder.cs
- StringHandle.cs
- _NestedSingleAsyncResult.cs
- StatusBarDrawItemEvent.cs
- JpegBitmapDecoder.cs
- IxmlLineInfo.cs
- Mapping.cs
- ObjectStateEntryDbDataRecord.cs
- FontWeights.cs
- ModifierKeysValueSerializer.cs
- AssemblyResourceLoader.cs
- MD5CryptoServiceProvider.cs
- TextBoxView.cs
- HighlightComponent.cs
- WebCodeGenerator.cs
- RawAppCommandInputReport.cs
- AppDomainShutdownMonitor.cs
- PersonalizationStateInfo.cs
- ToolStripDropDownClosedEventArgs.cs
- ItemList.cs
- StrokeCollectionDefaultValueFactory.cs