Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / InterOp / HwndSourceKeyboardInputSite.cs / 1407647 / HwndSourceKeyboardInputSite.cs
using System; using System.Windows.Input; using System.Collections; using MS.Win32; using System.Windows.Media; using System.Windows.Threading; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; using System.Security ; using MS.Internal.PresentationCore; namespace System.Windows.Interop { internal class HwndSourceKeyboardInputSite : IKeyboardInputSite { ////// Critical: satisfies a LinkDemand for 'UIPermissionAttribute' on method /// 'System.Windows.Interop.IKeyboardInputSink.set_KeyboardInputSite(System.Windows.Interop.IKeyboardInputSite)'. /// [SecurityCritical] public HwndSourceKeyboardInputSite(HwndSource source, IKeyboardInputSink sink) { if(source == null) { throw new ArgumentNullException("source"); } if(sink == null) { throw new ArgumentNullException("sink"); } if(!(sink is UIElement)) { throw new ArgumentException(SR.Get(SRID.KeyboardSinkMustBeAnElement), "sink"); } _source = source; _sink = sink; _sink.KeyboardInputSite = this; _sinkElement = sink as UIElement; } #region IKeyboardInputSite ////// Unregisters a child KeyboardInputSink from this sink. /// ////// Requires unmanaged code permission. /// ////// Critical - calls CriticalUnregister. /// TreatAsSafe: - Interface declaration demands unrestricted UI permission /// [ SecurityCritical,SecurityTreatAsSafe ] void IKeyboardInputSite.Unregister() { CriticalUnregister(); } ////// Unregisters a child KeyboardInputSink from this sink. /// ////// Critical - calls CriticalUnregisterKeyboardInputSink /// [ SecurityCritical ] internal void CriticalUnregister() { if(_source != null && _sink != null) { _source.CriticalUnregisterKeyboardInputSink(this); _sink.KeyboardInputSite = null; } _source = null; _sink = null; } ////// Returns the sink associated with this site (the "child", not /// the "parent" sink that owns the site). There's no way of /// getting from the site to the parent sink. /// IKeyboardInputSink IKeyboardInputSite.Sink { get { return _sink; } } ////// Components call this when they want to move focus ("tab") but /// have nowhere further to tab within their own component. Return /// value is true if the site moved focus, false if the calling /// component still has focus and should wrap around. /// bool IKeyboardInputSite.OnNoMoreTabStops(TraversalRequest request) { bool traversed = false; if(_sinkElement != null) { traversed = _sinkElement.MoveFocus(request); } return traversed; } #endregion IKeyboardInputSite private HwndSource _source; private IKeyboardInputSink _sink; private UIElement _sinkElement; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Windows.Input; using System.Collections; using MS.Win32; using System.Windows.Media; using System.Windows.Threading; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; using System.Security ; using MS.Internal.PresentationCore; namespace System.Windows.Interop { internal class HwndSourceKeyboardInputSite : IKeyboardInputSite { ////// Critical: satisfies a LinkDemand for 'UIPermissionAttribute' on method /// 'System.Windows.Interop.IKeyboardInputSink.set_KeyboardInputSite(System.Windows.Interop.IKeyboardInputSite)'. /// [SecurityCritical] public HwndSourceKeyboardInputSite(HwndSource source, IKeyboardInputSink sink) { if(source == null) { throw new ArgumentNullException("source"); } if(sink == null) { throw new ArgumentNullException("sink"); } if(!(sink is UIElement)) { throw new ArgumentException(SR.Get(SRID.KeyboardSinkMustBeAnElement), "sink"); } _source = source; _sink = sink; _sink.KeyboardInputSite = this; _sinkElement = sink as UIElement; } #region IKeyboardInputSite ////// Unregisters a child KeyboardInputSink from this sink. /// ////// Requires unmanaged code permission. /// ////// Critical - calls CriticalUnregister. /// TreatAsSafe: - Interface declaration demands unrestricted UI permission /// [ SecurityCritical,SecurityTreatAsSafe ] void IKeyboardInputSite.Unregister() { CriticalUnregister(); } ////// Unregisters a child KeyboardInputSink from this sink. /// ////// Critical - calls CriticalUnregisterKeyboardInputSink /// [ SecurityCritical ] internal void CriticalUnregister() { if(_source != null && _sink != null) { _source.CriticalUnregisterKeyboardInputSink(this); _sink.KeyboardInputSite = null; } _source = null; _sink = null; } ////// Returns the sink associated with this site (the "child", not /// the "parent" sink that owns the site). There's no way of /// getting from the site to the parent sink. /// IKeyboardInputSink IKeyboardInputSite.Sink { get { return _sink; } } ////// Components call this when they want to move focus ("tab") but /// have nowhere further to tab within their own component. Return /// value is true if the site moved focus, false if the calling /// component still has focus and should wrap around. /// bool IKeyboardInputSite.OnNoMoreTabStops(TraversalRequest request) { bool traversed = false; if(_sinkElement != null) { traversed = _sinkElement.MoveFocus(request); } return traversed; } #endregion IKeyboardInputSite private HwndSource _source; private IKeyboardInputSink _sink; private UIElement _sinkElement; } } // 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
- Comparer.cs
- OpenFileDialog.cs
- StringPropertyBuilder.cs
- UserNameSecurityTokenAuthenticator.cs
- ProgressBarRenderer.cs
- BindingContext.cs
- BoolExpression.cs
- DSACryptoServiceProvider.cs
- NgenServicingAttributes.cs
- DataServices.cs
- PlatformCulture.cs
- DataServiceQuery.cs
- DataGridViewLinkCell.cs
- FacetDescription.cs
- HtmlGenericControl.cs
- BamlTreeMap.cs
- ZoomPercentageConverter.cs
- BitmapEffectOutputConnector.cs
- FilterException.cs
- ScriptingJsonSerializationSection.cs
- AttributeSetAction.cs
- NestedContainer.cs
- StringInfo.cs
- InvalidProgramException.cs
- UnsafeNativeMethods.cs
- TextEffect.cs
- UrlMappingCollection.cs
- EventRecordWrittenEventArgs.cs
- FilterQuery.cs
- TextComposition.cs
- URLMembershipCondition.cs
- MbpInfo.cs
- RequestQueryParser.cs
- BaseTemplateParser.cs
- EncryptedXml.cs
- SystemNetHelpers.cs
- ScriptingProfileServiceSection.cs
- ToolStripManager.cs
- ColumnHeaderConverter.cs
- GregorianCalendar.cs
- FrameworkContextData.cs
- VarRemapper.cs
- ACL.cs
- XmlMapping.cs
- MemberPathMap.cs
- ItemsChangedEventArgs.cs
- SerializationUtilities.cs
- XmlDownloadManager.cs
- VarRemapper.cs
- SchemaObjectWriter.cs
- Vector3DIndependentAnimationStorage.cs
- LongAverageAggregationOperator.cs
- RegistryExceptionHelper.cs
- XmlLinkedNode.cs
- WebReferencesBuildProvider.cs
- DeferredReference.cs
- XmlSchemaAttributeGroup.cs
- BuildProvidersCompiler.cs
- CommandHelper.cs
- VirtualizingStackPanel.cs
- XmlDeclaration.cs
- BamlBinaryReader.cs
- TagPrefixInfo.cs
- SQLCharsStorage.cs
- HitTestParameters.cs
- TdsRecordBufferSetter.cs
- WebPartMinimizeVerb.cs
- ReadOnlyNameValueCollection.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- SoapObjectInfo.cs
- ProcessThread.cs
- CodeSnippetTypeMember.cs
- FunctionImportMapping.cs
- TextCompositionEventArgs.cs
- GeneralEndpointIdentity.cs
- SecurityUtils.cs
- ReturnEventArgs.cs
- DataTransferEventArgs.cs
- parserscommon.cs
- XmlSerializableWriter.cs
- ListViewDataItem.cs
- BStrWrapper.cs
- ThemeDirectoryCompiler.cs
- FrameworkContentElement.cs
- NonParentingControl.cs
- HtmlWindow.cs
- ProxyWebPart.cs
- Converter.cs
- RuntimeHelpers.cs
- XdrBuilder.cs
- Page.cs
- SymbolTable.cs
- StylusPointPropertyInfoDefaults.cs
- TimeSpanConverter.cs
- ProxySimple.cs
- RIPEMD160.cs
- SettingsBindableAttribute.cs
- Activator.cs
- DesignSurfaceCollection.cs
- UshortList2.cs