Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- IsolatedStorageFile.cs
- Timer.cs
- PasswordDeriveBytes.cs
- XmlIgnoreAttribute.cs
- SortDescriptionCollection.cs
- DeferredReference.cs
- BooleanStorage.cs
- EmptyStringExpandableObjectConverter.cs
- SqlFunctions.cs
- CodeIndexerExpression.cs
- SlipBehavior.cs
- Bold.cs
- ComEventsSink.cs
- ReferentialConstraint.cs
- PropertyReferenceExtension.cs
- FileSystemEventArgs.cs
- HyperLinkDataBindingHandler.cs
- IDQuery.cs
- StrongName.cs
- HiddenFieldPageStatePersister.cs
- ImageUrlEditor.cs
- UxThemeWrapper.cs
- AutoResetEvent.cs
- NumberFormatter.cs
- DataGridDetailsPresenterAutomationPeer.cs
- SignatureToken.cs
- Pkcs7Signer.cs
- MissingMemberException.cs
- XmlSerializationReader.cs
- FrameworkContentElementAutomationPeer.cs
- EdmConstants.cs
- ViewCellSlot.cs
- XmlToDatasetMap.cs
- DropShadowEffect.cs
- XXXInfos.cs
- ApplicationCommands.cs
- MatrixAnimationBase.cs
- InvalidProgramException.cs
- XmlSchemaNotation.cs
- RtType.cs
- XmlDesigner.cs
- Font.cs
- IntegerValidatorAttribute.cs
- MbpInfo.cs
- ReverseInheritProperty.cs
- WebPartMenu.cs
- ProjectionPlanCompiler.cs
- XPathSelfQuery.cs
- Int32Collection.cs
- MailSettingsSection.cs
- CounterCreationDataConverter.cs
- EpmSyndicationContentDeSerializer.cs
- SafeNativeMethods.cs
- Label.cs
- ManipulationVelocities.cs
- WorkflowServiceBehavior.cs
- ClickablePoint.cs
- HtmlInputControl.cs
- FrameworkElementAutomationPeer.cs
- SqlConnectionManager.cs
- LinqDataSourceStatusEventArgs.cs
- AbstractSvcMapFileLoader.cs
- EntityDataSourceState.cs
- Point4DConverter.cs
- HtmlTableRowCollection.cs
- MemoryPressure.cs
- DispatcherExceptionFilterEventArgs.cs
- CodeAttachEventStatement.cs
- DBConcurrencyException.cs
- ToolStripGrip.cs
- RuntimeIdentifierPropertyAttribute.cs
- OpenFileDialog.cs
- BamlResourceContent.cs
- AuthenticatedStream.cs
- VisualProxy.cs
- TargetControlTypeAttribute.cs
- Quaternion.cs
- ServiceOperationInvoker.cs
- XslNumber.cs
- NonceCache.cs
- mediaclock.cs
- FileDocument.cs
- RowCache.cs
- TextBoxView.cs
- InputScopeAttribute.cs
- XmlDataContract.cs
- MemberMaps.cs
- NamedPipeWorkerProcess.cs
- GridToolTip.cs
- ProgressBarAutomationPeer.cs
- CompressionTransform.cs
- ArglessEventHandlerProxy.cs
- SqlDataRecord.cs
- PolicyException.cs
- QuaternionRotation3D.cs
- AttributeProviderAttribute.cs
- TransportContext.cs
- DependentList.cs
- RegularExpressionValidator.cs
- BatchServiceHost.cs