Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / InterOp / HwndSourceKeyboardInputSite.cs / 1 / 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 { 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 { 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
- Decorator.cs
- EmptyEnumerator.cs
- XPathMultyIterator.cs
- FileDataSourceCache.cs
- SmiRecordBuffer.cs
- DecimalAnimationUsingKeyFrames.cs
- MemberBinding.cs
- ExpressionPrefixAttribute.cs
- CapacityStreamGeometryContext.cs
- CollectionConverter.cs
- SqlProviderUtilities.cs
- RightsManagementEncryptedStream.cs
- ParamArrayAttribute.cs
- WebContentFormatHelper.cs
- SafeFileHandle.cs
- FieldBuilder.cs
- TimersDescriptionAttribute.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- PropertyChangingEventArgs.cs
- SdlChannelSink.cs
- OdbcConnectionHandle.cs
- PersonalizationStateInfo.cs
- _IPv4Address.cs
- TextTreeTextElementNode.cs
- BaseConfigurationRecord.cs
- ThreadSafeList.cs
- BinarySerializer.cs
- Brush.cs
- WindowsToolbarAsMenu.cs
- QilExpression.cs
- Crc32.cs
- PointCollection.cs
- ManagedFilter.cs
- CorrelationManager.cs
- TypeValidationEventArgs.cs
- Control.cs
- HMACMD5.cs
- DataSourceHelper.cs
- SmiMetaDataProperty.cs
- DbParameterCollection.cs
- BuildProviderCollection.cs
- InvokeGenerator.cs
- xml.cs
- RenderDataDrawingContext.cs
- ComEventsMethod.cs
- SystemResources.cs
- VisualBasicDesignerHelper.cs
- NativeMethods.cs
- CultureSpecificCharacterBufferRange.cs
- BitmapFrame.cs
- xmlfixedPageInfo.cs
- CodeDOMProvider.cs
- ImageListUtils.cs
- DrawingImage.cs
- WmlPhoneCallAdapter.cs
- FilterQuery.cs
- COM2IDispatchConverter.cs
- StyleSelector.cs
- SmtpException.cs
- GridViewUpdatedEventArgs.cs
- DllHostInitializer.cs
- ToolStripPanelSelectionGlyph.cs
- ExtractCollection.cs
- CodeDirectiveCollection.cs
- Deflater.cs
- nulltextcontainer.cs
- ObjectItemLoadingSessionData.cs
- HtmlInputSubmit.cs
- StrongNameKeyPair.cs
- DataListItem.cs
- RootBuilder.cs
- lengthconverter.cs
- SqlDataSourceAdvancedOptionsForm.cs
- PanelStyle.cs
- SystemWebCachingSectionGroup.cs
- XPathNodePointer.cs
- NotCondition.cs
- _WinHttpWebProxyDataBuilder.cs
- MDIControlStrip.cs
- Grammar.cs
- _TransmitFileOverlappedAsyncResult.cs
- SignedPkcs7.cs
- TextAnchor.cs
- FolderLevelBuildProvider.cs
- ConfigurationException.cs
- SettingsPropertyIsReadOnlyException.cs
- ScriptingProfileServiceSection.cs
- ControlBuilderAttribute.cs
- SubpageParagraph.cs
- TypeListConverter.cs
- AssemblyCacheEntry.cs
- CompositeControl.cs
- XpsFont.cs
- DefaultBindingPropertyAttribute.cs
- CurrencyWrapper.cs
- BitmapEncoder.cs
- FillErrorEventArgs.cs
- Parallel.cs
- CompositeActivityDesigner.cs
- QilInvokeLateBound.cs