Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / WinFormsSpinner.cs / 1 / WinFormsSpinner.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Spinner Proxy // // History: // a-jeanp Entirely revised // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Text; using System.ComponentModel; using System.Globalization; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows; using MS.Win32; namespace MS.Internal.AutomationProxies { // WinForms NumericUpDown proxy class WinformsSpinner : ProxyHwnd, IRawElementProviderHwndOverride, IRangeValueProvider, IValueProvider { // ----------------------------------------------------- // // Constructors // // ----------------------------------------------------- #region Constructors // Contructor for WinformsSpinner class. Calls the base class constructor. internal WinformsSpinner(IntPtr hwnd, IntPtr hwndEdit, IntPtr hwndUpDown, ProxyFragment parent, int item) : base(hwnd, parent, item) { _elEdit = new WindowsEditBox(hwndEdit, this, (int)0); _elUpDown = new WindowsUpDown(hwndUpDown, this, (int)0); string text; try { text = Misc.ProxyGetText(hwndEdit); } catch (TimeoutException) { text = null; } catch (Win32Exception) { text = null; } if (!string.IsNullOrEmpty(text)) { try { double.Parse(text, NumberStyles.Any, CultureInfo.InvariantCulture); // the text parsed just fine so must be a number. _type = SpinnerType.Numeric; } catch (FormatException) { // the text is not a based 10 number. Check if the text is a hex number. try { int.Parse(text, NumberStyles.HexNumber, CultureInfo.InvariantCulture); // the text parsed just fine so must be a number. _type = SpinnerType.Numeric; } catch (FormatException) { // the text does not consist solely of an optional negative sign followed by a sequence of // digits ranging from 0 to 9, so this spinner must be a domain spinner _type = SpinnerType.Domain; } catch (OverflowException) { // the text represents a number less than MinValue or greater than MaxValue, but it is still // a number, therefore must be a numeric spinner _type = SpinnerType.Numeric; } } catch (OverflowException) { // the text represents a number less than MinValue or greater than MaxValue, but it is still // a number, therefore must be a numeric spinner _type = SpinnerType.Numeric; } } else { // numeric spinners always have a value. The defualt state of a domain spinner // may be blank. The text value is blank so this must be a domain spinner. _type = SpinnerType.Domain; } // Set the strings to return properly the properties. _cControlType = ControlType.Spinner; // support for events _createOnEvent = new WinEventTracker.ProxyRaiseEvents(WindowsUpDown.RaiseEvents); } #endregion #region Proxy Create // Static Create method called by UIAutomation to create this proxy. // returns null if unsuccessful internal static IRawElementProviderSimple Create(IntPtr hwnd, int idChild, int idObject) { return Create(hwnd, idChild); } internal static IRawElementProviderSimple Create(IntPtr hwnd, int idChild) { // If idChild is not zero this can't be a Winforms spinner. The way this // code is called, the passed in hwnd could be some other control and in // that case the calling code should continue looking for a valid proxy. if (idChild != 0) { return null; } try { // // A winform spinner control can only have 2 children - An Edit and an UpDown. // // First child IntPtr hwndFirstChild = Misc.GetWindow(hwnd, NativeMethods.GW_CHILD); if (hwndFirstChild == IntPtr.Zero) { return null; } // Last child IntPtr hwndLastChild = Misc.GetWindow(hwndFirstChild, NativeMethods.GW_HWNDLAST); if (hwndLastChild == IntPtr.Zero) { return null; } // No children in the middle if (Misc.GetWindow(hwndFirstChild, NativeMethods.GW_HWNDNEXT) != hwndLastChild) { return null; } // We need to positively identify the two children as Edit and UpDown controls IntPtr hwndEdit; IntPtr hwndSpin; // Find the Edit control. Typically the UpDown is first so we'll start with the other window. if (Misc.ProxyGetClassName(hwndLastChild).IndexOf("Edit", StringComparison.OrdinalIgnoreCase) != -1) { hwndEdit = hwndLastChild; hwndSpin = hwndFirstChild; } else { // Haven't seen this but suppose it's possible. Subsequent test will confirm. if (Misc.ProxyGetClassName(hwndFirstChild).IndexOf("Edit", StringComparison.OrdinalIgnoreCase) != -1) { hwndEdit = hwndFirstChild; hwndSpin = hwndLastChild; } else { // Must contain an Edit/UpDown control pair return null; } } // // A winform UpDown control can only have 2 children, both spin buttons. // // Use IAccessible implementation to confirm the spinner & children Accessible acc = null; if (Accessible.AccessibleObjectFromWindow(hwndSpin, NativeMethods.OBJID_CLIENT, ref acc) != NativeMethods.S_OK || acc == null) { return null; } if ((acc.Role != AccessibleRole.SpinButton) || (acc.ChildCount != 2)) { return null; } // Confirmed spinner return new WinformsSpinner(hwnd, hwndEdit, hwndSpin, null, 0); } catch (ElementNotAvailableException) { // Ignore ElementNotAvailableExceptions and return null return null; } } #endregion Proxy Create //------------------------------------------------------ // // Patterns Implementation // //----------------------------------------------------- // ------------------------------------------------------ // // ProxySimple interface implementation // // ------------------------------------------------------ #region ProxySimple Interface // Returns a pattern interface if supported. internal override object GetPatternProvider (AutomationPattern iid) { if (iid == RangeValuePattern.Pattern && _type == SpinnerType.Numeric) { return this; } else if (_type == SpinnerType.Domain) { if (iid == ValuePattern.Pattern) { return this; } else if (iid == SelectionPattern.Pattern) { // Special case for a WinForms domain spinner. It is supposed to support // SelectionPattern, but because it is based on an edit control, this is // not possible unless each of the items in the spinner have been reviewed // at least once. Call out this unusual case by throwing the following // NotImplementedException. throw new NotImplementedException(); } } return null; } #endregion // ----------------------------------------------------- // // ProxyFragment interface implementation // // ------------------------------------------------------ #region ProxyFragment Interface // Returns a Proxy element corresponding to the specified screen coordinates. internal override ProxySimple ElementProviderFromPoint(int x, int y) { Rect rcUpDown = _elUpDown.BoundingRectangle; if (rcUpDown.Contains(new Point(x, y))) { return _elUpDown.ElementProviderFromPoint (x, y); } return this; } #endregion // ----------------------------------------------------- // // ProxyHwnd interface implementation // // ----------------------------------------------------- #region ProxyHwnd Interface internal override void AdviseEventAdded(AutomationEvent eventId, AutomationProperty[] aidProps) { base.AdviseEventAdded(eventId, aidProps); // Need to also advise the edit portions of the spinner so that it can raise events. if (_elEdit != null) { _elEdit.AdviseEventAdded(eventId, aidProps); } } internal override void AdviseEventRemoved(AutomationEvent eventId, AutomationProperty[] aidProps) { base.AdviseEventRemoved(eventId, aidProps); // Need to also remove the advise from the edit portions of the spinner. if (_elEdit != null) { _elEdit.AdviseEventRemoved(eventId, aidProps); } } #endregion // ----------------------------------------------------- // // IRawElementProviderHwndOverride interface implementation // // ------------------------------------------------------ #region IRawElementProviderHwndOverride IRawElementProviderSimple IRawElementProviderHwndOverride.GetOverrideProviderForHwnd(IntPtr hwnd) { // The Edit hwnd in the spinner is not a Logical Element // returns the full spinner on the request to get a provider for the edit if (IsEdit(hwnd)) { return new WinformsSpinnerEdit(_hwnd, _elEdit._hwnd, _elUpDown._hwnd, _parent, _item); } return null; } #endregion IRawElementProviderHwndOverride // ----------------------------------------------------- // // IRangeValueProvider interface implementation // // ------------------------------------------------------ #region RangeValue Pattern // Sets a new position for the edit part of the spinner. void IRangeValueProvider.SetValue (double obj) { ((IRangeValueProvider)_elUpDown).SetValue(obj); } // Request to get the value that this UI element is representing in a native format double IRangeValueProvider.Value { get { return ((IRangeValueProvider)_elUpDown).Value; } } bool IRangeValueProvider.IsReadOnly { get { return (bool)((IRangeValueProvider)_elUpDown).IsReadOnly && (bool)((IValueProvider)_elEdit).IsReadOnly; } } double IRangeValueProvider.Maximum { get { return ((IRangeValueProvider)_elUpDown).Maximum; } } double IRangeValueProvider.Minimum { get { return ((IRangeValueProvider)_elUpDown).Minimum; } } double IRangeValueProvider.SmallChange { get { return ((IRangeValueProvider)_elUpDown).SmallChange; } } double IRangeValueProvider.LargeChange { get { return ((IRangeValueProvider)_elUpDown).LargeChange; } } #endregion RangeValuePattern #region Value Pattern // ------------------------------------------------------ // // IValueProvider interface implementation // // ----------------------------------------------------- // Sets a value into the edit box void IValueProvider.SetValue(string val) { ((IValueProvider)_elEdit).SetValue(val); } // Returns the value of the edit. string IValueProvider.Value { get { return ((IValueProvider)_elEdit).Value; } } // Returns if the edit control is read-only. bool IValueProvider.IsReadOnly { get { return true; } } #endregion // ------------------------------------------------------ // // Private methods // // ----------------------------------------------------- #region Private Methods // Check if the hwnd is the Edit Window in the spinner box private bool IsEdit(IntPtr hwnd) { return _elEdit._hwnd == hwnd; } #endregion // ----------------------------------------------------- // // Private Fields // // ----------------------------------------------------- #region Private Fields private WindowsEditBox _elEdit; private WindowsUpDown _elUpDown; private SpinnerType _type; #endregion // ------------------------------------------------------ // // Private Types // // ----------------------------------------------------- #region Private Types // Button control types based on groupings of style constants private enum SpinnerType { Numeric, Domain }; #endregion //------------------------------------------------------ // // WinformsSpinnerEdit Private Class // //------------------------------------------------------ #region WinformsSpinnerEdit // Proxy for ComboBox Edit portion // The Edit proxy does not exist, it the the whole spinner. This class is needed // though to override ProviderOptions class WinformsSpinnerEdit : WinformsSpinner { //----------------------------------------------------- // // Constructors // //------------------------------------------------------ #region Constructor internal WinformsSpinnerEdit(IntPtr hwnd, IntPtr hwndEdit, IntPtr hwndUpDown, ProxyFragment parent, int item) : base(hwnd, hwndEdit, hwndUpDown, parent, item) { } #endregion Constructor //----------------------------------------------------- // // Provider Implementation // //----------------------------------------------------- internal override ProviderOptions ProviderOptions { get { return base.ProviderOptions | ProviderOptions.OverrideProvider; } } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Spinner Proxy // // History: // a-jeanp Entirely revised // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Text; using System.ComponentModel; using System.Globalization; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows; using MS.Win32; namespace MS.Internal.AutomationProxies { // WinForms NumericUpDown proxy class WinformsSpinner : ProxyHwnd, IRawElementProviderHwndOverride, IRangeValueProvider, IValueProvider { // ----------------------------------------------------- // // Constructors // // ----------------------------------------------------- #region Constructors // Contructor for WinformsSpinner class. Calls the base class constructor. internal WinformsSpinner(IntPtr hwnd, IntPtr hwndEdit, IntPtr hwndUpDown, ProxyFragment parent, int item) : base(hwnd, parent, item) { _elEdit = new WindowsEditBox(hwndEdit, this, (int)0); _elUpDown = new WindowsUpDown(hwndUpDown, this, (int)0); string text; try { text = Misc.ProxyGetText(hwndEdit); } catch (TimeoutException) { text = null; } catch (Win32Exception) { text = null; } if (!string.IsNullOrEmpty(text)) { try { double.Parse(text, NumberStyles.Any, CultureInfo.InvariantCulture); // the text parsed just fine so must be a number. _type = SpinnerType.Numeric; } catch (FormatException) { // the text is not a based 10 number. Check if the text is a hex number. try { int.Parse(text, NumberStyles.HexNumber, CultureInfo.InvariantCulture); // the text parsed just fine so must be a number. _type = SpinnerType.Numeric; } catch (FormatException) { // the text does not consist solely of an optional negative sign followed by a sequence of // digits ranging from 0 to 9, so this spinner must be a domain spinner _type = SpinnerType.Domain; } catch (OverflowException) { // the text represents a number less than MinValue or greater than MaxValue, but it is still // a number, therefore must be a numeric spinner _type = SpinnerType.Numeric; } } catch (OverflowException) { // the text represents a number less than MinValue or greater than MaxValue, but it is still // a number, therefore must be a numeric spinner _type = SpinnerType.Numeric; } } else { // numeric spinners always have a value. The defualt state of a domain spinner // may be blank. The text value is blank so this must be a domain spinner. _type = SpinnerType.Domain; } // Set the strings to return properly the properties. _cControlType = ControlType.Spinner; // support for events _createOnEvent = new WinEventTracker.ProxyRaiseEvents(WindowsUpDown.RaiseEvents); } #endregion #region Proxy Create // Static Create method called by UIAutomation to create this proxy. // returns null if unsuccessful internal static IRawElementProviderSimple Create(IntPtr hwnd, int idChild, int idObject) { return Create(hwnd, idChild); } internal static IRawElementProviderSimple Create(IntPtr hwnd, int idChild) { // If idChild is not zero this can't be a Winforms spinner. The way this // code is called, the passed in hwnd could be some other control and in // that case the calling code should continue looking for a valid proxy. if (idChild != 0) { return null; } try { // // A winform spinner control can only have 2 children - An Edit and an UpDown. // // First child IntPtr hwndFirstChild = Misc.GetWindow(hwnd, NativeMethods.GW_CHILD); if (hwndFirstChild == IntPtr.Zero) { return null; } // Last child IntPtr hwndLastChild = Misc.GetWindow(hwndFirstChild, NativeMethods.GW_HWNDLAST); if (hwndLastChild == IntPtr.Zero) { return null; } // No children in the middle if (Misc.GetWindow(hwndFirstChild, NativeMethods.GW_HWNDNEXT) != hwndLastChild) { return null; } // We need to positively identify the two children as Edit and UpDown controls IntPtr hwndEdit; IntPtr hwndSpin; // Find the Edit control. Typically the UpDown is first so we'll start with the other window. if (Misc.ProxyGetClassName(hwndLastChild).IndexOf("Edit", StringComparison.OrdinalIgnoreCase) != -1) { hwndEdit = hwndLastChild; hwndSpin = hwndFirstChild; } else { // Haven't seen this but suppose it's possible. Subsequent test will confirm. if (Misc.ProxyGetClassName(hwndFirstChild).IndexOf("Edit", StringComparison.OrdinalIgnoreCase) != -1) { hwndEdit = hwndFirstChild; hwndSpin = hwndLastChild; } else { // Must contain an Edit/UpDown control pair return null; } } // // A winform UpDown control can only have 2 children, both spin buttons. // // Use IAccessible implementation to confirm the spinner & children Accessible acc = null; if (Accessible.AccessibleObjectFromWindow(hwndSpin, NativeMethods.OBJID_CLIENT, ref acc) != NativeMethods.S_OK || acc == null) { return null; } if ((acc.Role != AccessibleRole.SpinButton) || (acc.ChildCount != 2)) { return null; } // Confirmed spinner return new WinformsSpinner(hwnd, hwndEdit, hwndSpin, null, 0); } catch (ElementNotAvailableException) { // Ignore ElementNotAvailableExceptions and return null return null; } } #endregion Proxy Create //------------------------------------------------------ // // Patterns Implementation // //----------------------------------------------------- // ------------------------------------------------------ // // ProxySimple interface implementation // // ------------------------------------------------------ #region ProxySimple Interface // Returns a pattern interface if supported. internal override object GetPatternProvider (AutomationPattern iid) { if (iid == RangeValuePattern.Pattern && _type == SpinnerType.Numeric) { return this; } else if (_type == SpinnerType.Domain) { if (iid == ValuePattern.Pattern) { return this; } else if (iid == SelectionPattern.Pattern) { // Special case for a WinForms domain spinner. It is supposed to support // SelectionPattern, but because it is based on an edit control, this is // not possible unless each of the items in the spinner have been reviewed // at least once. Call out this unusual case by throwing the following // NotImplementedException. throw new NotImplementedException(); } } return null; } #endregion // ----------------------------------------------------- // // ProxyFragment interface implementation // // ------------------------------------------------------ #region ProxyFragment Interface // Returns a Proxy element corresponding to the specified screen coordinates. internal override ProxySimple ElementProviderFromPoint(int x, int y) { Rect rcUpDown = _elUpDown.BoundingRectangle; if (rcUpDown.Contains(new Point(x, y))) { return _elUpDown.ElementProviderFromPoint (x, y); } return this; } #endregion // ----------------------------------------------------- // // ProxyHwnd interface implementation // // ----------------------------------------------------- #region ProxyHwnd Interface internal override void AdviseEventAdded(AutomationEvent eventId, AutomationProperty[] aidProps) { base.AdviseEventAdded(eventId, aidProps); // Need to also advise the edit portions of the spinner so that it can raise events. if (_elEdit != null) { _elEdit.AdviseEventAdded(eventId, aidProps); } } internal override void AdviseEventRemoved(AutomationEvent eventId, AutomationProperty[] aidProps) { base.AdviseEventRemoved(eventId, aidProps); // Need to also remove the advise from the edit portions of the spinner. if (_elEdit != null) { _elEdit.AdviseEventRemoved(eventId, aidProps); } } #endregion // ----------------------------------------------------- // // IRawElementProviderHwndOverride interface implementation // // ------------------------------------------------------ #region IRawElementProviderHwndOverride IRawElementProviderSimple IRawElementProviderHwndOverride.GetOverrideProviderForHwnd(IntPtr hwnd) { // The Edit hwnd in the spinner is not a Logical Element // returns the full spinner on the request to get a provider for the edit if (IsEdit(hwnd)) { return new WinformsSpinnerEdit(_hwnd, _elEdit._hwnd, _elUpDown._hwnd, _parent, _item); } return null; } #endregion IRawElementProviderHwndOverride // ----------------------------------------------------- // // IRangeValueProvider interface implementation // // ------------------------------------------------------ #region RangeValue Pattern // Sets a new position for the edit part of the spinner. void IRangeValueProvider.SetValue (double obj) { ((IRangeValueProvider)_elUpDown).SetValue(obj); } // Request to get the value that this UI element is representing in a native format double IRangeValueProvider.Value { get { return ((IRangeValueProvider)_elUpDown).Value; } } bool IRangeValueProvider.IsReadOnly { get { return (bool)((IRangeValueProvider)_elUpDown).IsReadOnly && (bool)((IValueProvider)_elEdit).IsReadOnly; } } double IRangeValueProvider.Maximum { get { return ((IRangeValueProvider)_elUpDown).Maximum; } } double IRangeValueProvider.Minimum { get { return ((IRangeValueProvider)_elUpDown).Minimum; } } double IRangeValueProvider.SmallChange { get { return ((IRangeValueProvider)_elUpDown).SmallChange; } } double IRangeValueProvider.LargeChange { get { return ((IRangeValueProvider)_elUpDown).LargeChange; } } #endregion RangeValuePattern #region Value Pattern // ------------------------------------------------------ // // IValueProvider interface implementation // // ----------------------------------------------------- // Sets a value into the edit box void IValueProvider.SetValue(string val) { ((IValueProvider)_elEdit).SetValue(val); } // Returns the value of the edit. string IValueProvider.Value { get { return ((IValueProvider)_elEdit).Value; } } // Returns if the edit control is read-only. bool IValueProvider.IsReadOnly { get { return true; } } #endregion // ------------------------------------------------------ // // Private methods // // ----------------------------------------------------- #region Private Methods // Check if the hwnd is the Edit Window in the spinner box private bool IsEdit(IntPtr hwnd) { return _elEdit._hwnd == hwnd; } #endregion // ----------------------------------------------------- // // Private Fields // // ----------------------------------------------------- #region Private Fields private WindowsEditBox _elEdit; private WindowsUpDown _elUpDown; private SpinnerType _type; #endregion // ------------------------------------------------------ // // Private Types // // ----------------------------------------------------- #region Private Types // Button control types based on groupings of style constants private enum SpinnerType { Numeric, Domain }; #endregion //------------------------------------------------------ // // WinformsSpinnerEdit Private Class // //------------------------------------------------------ #region WinformsSpinnerEdit // Proxy for ComboBox Edit portion // The Edit proxy does not exist, it the the whole spinner. This class is needed // though to override ProviderOptions class WinformsSpinnerEdit : WinformsSpinner { //----------------------------------------------------- // // Constructors // //------------------------------------------------------ #region Constructor internal WinformsSpinnerEdit(IntPtr hwnd, IntPtr hwndEdit, IntPtr hwndUpDown, ProxyFragment parent, int item) : base(hwnd, hwndEdit, hwndUpDown, parent, item) { } #endregion Constructor //----------------------------------------------------- // // Provider Implementation // //----------------------------------------------------- internal override ProviderOptions ProviderOptions { get { return base.ProviderOptions | ProviderOptions.OverrideProvider; } } } #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
- ReturnEventArgs.cs
- _Events.cs
- SendMailErrorEventArgs.cs
- HebrewCalendar.cs
- URIFormatException.cs
- CustomErrorsSectionWrapper.cs
- XsltInput.cs
- X509ClientCertificateCredentialsElement.cs
- SqlTopReducer.cs
- IntSecurity.cs
- localization.cs
- WindowsScroll.cs
- UTF7Encoding.cs
- WpfPayload.cs
- __Error.cs
- EmptyEnumerator.cs
- Storyboard.cs
- ObjectStateManagerMetadata.cs
- MouseWheelEventArgs.cs
- DesignerToolboxInfo.cs
- AnnotationHighlightLayer.cs
- AcceleratedTokenAuthenticator.cs
- ArrayHelper.cs
- WebPartDescriptionCollection.cs
- ObjectComplexPropertyMapping.cs
- ObjectRef.cs
- ToolStripGrip.cs
- OdbcParameterCollection.cs
- ServiceBusyException.cs
- PersistenceTypeAttribute.cs
- ObjectSet.cs
- RowUpdatingEventArgs.cs
- MatrixAnimationUsingPath.cs
- LocatorGroup.cs
- SynchronizedReadOnlyCollection.cs
- HostedHttpRequestAsyncResult.cs
- GlobalizationAssembly.cs
- InternalSafeNativeMethods.cs
- String.cs
- PrimaryKeyTypeConverter.cs
- GroupStyle.cs
- UniqueConstraint.cs
- TrustLevel.cs
- ColumnReorderedEventArgs.cs
- TabletDeviceInfo.cs
- SafeNativeMethods.cs
- XmlReaderDelegator.cs
- MimeMapping.cs
- LayoutEngine.cs
- StylusOverProperty.cs
- ErrorFormatterPage.cs
- DesignSurfaceEvent.cs
- GraphicsPath.cs
- RenderDataDrawingContext.cs
- EntityWithChangeTrackerStrategy.cs
- GiveFeedbackEventArgs.cs
- RemoteWebConfigurationHost.cs
- DataGridViewCellMouseEventArgs.cs
- SystemDropShadowChrome.cs
- EntityTypeEmitter.cs
- MissingFieldException.cs
- SystemNetworkInterface.cs
- Models.cs
- SplashScreen.cs
- RefreshEventArgs.cs
- HandlerWithFactory.cs
- SByteConverter.cs
- EventItfInfo.cs
- PackageRelationshipSelector.cs
- WebServiceParameterData.cs
- MultiSelector.cs
- SqlProviderManifest.cs
- HMACSHA512.cs
- FrameworkContentElement.cs
- TextTreeTextNode.cs
- NotCondition.cs
- DispatcherEventArgs.cs
- HttpCookieCollection.cs
- RightNameExpirationInfoPair.cs
- SqlMethodCallConverter.cs
- ResolvedKeyFrameEntry.cs
- ContextMenuStrip.cs
- _OSSOCK.cs
- FilePrompt.cs
- RemotingHelper.cs
- ObjectCacheSettings.cs
- X509CertificateTokenFactoryCredential.cs
- TextParagraphProperties.cs
- NativeActivityContext.cs
- NativeDirectoryServicesQueryAPIs.cs
- SelectionGlyph.cs
- PageThemeBuildProvider.cs
- _ListenerAsyncResult.cs
- DataGridViewElement.cs
- NamedPipeTransportSecurityElement.cs
- IncomingWebRequestContext.cs
- SortQuery.cs
- PerformanceCounterPermission.cs
- Camera.cs
- ActivityContext.cs