Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / InterOp / HwndSourceKeyboardInputSite.cs / 2 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSyndicationContent.cs
- InvokeProviderWrapper.cs
- DesignTimeType.cs
- COM2Enum.cs
- TranslateTransform.cs
- DataObjectCopyingEventArgs.cs
- EntityStoreSchemaFilterEntry.cs
- BitmapVisualManager.cs
- TextLine.cs
- XmlEntity.cs
- ExpressionBuilderContext.cs
- SmtpCommands.cs
- latinshape.cs
- XmlnsDictionary.cs
- Trace.cs
- TrustLevel.cs
- WebPartRestoreVerb.cs
- AssemblyBuilder.cs
- DropDownList.cs
- Misc.cs
- TiffBitmapDecoder.cs
- GeometryHitTestResult.cs
- LOSFormatter.cs
- FragmentNavigationEventArgs.cs
- METAHEADER.cs
- DataGridViewComboBoxColumnDesigner.cs
- WbemProvider.cs
- FacetEnabledSchemaElement.cs
- WebPartsPersonalization.cs
- AppSettingsSection.cs
- XmlSchemaAppInfo.cs
- SqlConnectionStringBuilder.cs
- VisualBrush.cs
- ModelItemExtensions.cs
- ModelPerspective.cs
- DataRecordInternal.cs
- SettingsPropertyWrongTypeException.cs
- RenderOptions.cs
- Partitioner.cs
- RemotingException.cs
- DataGridViewRowStateChangedEventArgs.cs
- MaterialCollection.cs
- RootBrowserWindowProxy.cs
- EpmSyndicationContentSerializer.cs
- SocketInformation.cs
- BufferedGraphicsManager.cs
- DesignerTransaction.cs
- storepermissionattribute.cs
- XmlSchemaImporter.cs
- DefaultSettingsSection.cs
- XdrBuilder.cs
- Configuration.cs
- SmiRecordBuffer.cs
- RequiredAttributeAttribute.cs
- Vector3dCollection.cs
- HashCodeCombiner.cs
- Composition.cs
- DecoderFallback.cs
- FlowDocumentPage.cs
- PageContent.cs
- SqlProvider.cs
- DataRow.cs
- QueryParameter.cs
- ServiceObjectContainer.cs
- ZoneLinkButton.cs
- ListViewItemSelectionChangedEvent.cs
- StaticFileHandler.cs
- StatusBarPanelClickEvent.cs
- AuthorizationSection.cs
- OrderByLifter.cs
- SpnegoTokenAuthenticator.cs
- ImageCodecInfo.cs
- ColumnMapProcessor.cs
- LocalTransaction.cs
- PropertyMapper.cs
- Matrix3DValueSerializer.cs
- GAC.cs
- DataViewSettingCollection.cs
- ProgramPublisher.cs
- TextEffect.cs
- Error.cs
- ModelItemCollection.cs
- UnsafeNativeMethodsTablet.cs
- ApplicationBuildProvider.cs
- ModifierKeysConverter.cs
- DataSourceComponent.cs
- BidOverLoads.cs
- ContentDisposition.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- SelectionPattern.cs
- EnterpriseServicesHelper.cs
- DataBinder.cs
- _ContextAwareResult.cs
- NotImplementedException.cs
- WebPartConnectionCollection.cs
- CodeTypeMemberCollection.cs
- ParenExpr.cs
- LambdaCompiler.Generated.cs
- ColorConverter.cs
- CharKeyFrameCollection.cs