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
- UnionExpr.cs
- AssertSection.cs
- WpfKnownType.cs
- TextLineBreak.cs
- TableParaClient.cs
- __FastResourceComparer.cs
- SchemaAttDef.cs
- OleDbCommandBuilder.cs
- MethodBody.cs
- DocumentDesigner.cs
- TreeNodeCollection.cs
- HandleCollector.cs
- IsolatedStoragePermission.cs
- LogArchiveSnapshot.cs
- ControlCachePolicy.cs
- DirectoryInfo.cs
- ChangeInterceptorAttribute.cs
- ZipIOLocalFileHeader.cs
- XmlImplementation.cs
- GcSettings.cs
- HtmlInputSubmit.cs
- TextElementEnumerator.cs
- _AuthenticationState.cs
- DES.cs
- FileSystemWatcher.cs
- IntegerFacetDescriptionElement.cs
- XPathNodeList.cs
- Activity.cs
- ChannelEndpointElement.cs
- ThreadStaticAttribute.cs
- CodeMemberField.cs
- TreeViewCancelEvent.cs
- DbMetaDataFactory.cs
- EmptyEnumerator.cs
- SectionVisual.cs
- QilDataSource.cs
- RuntimeEnvironment.cs
- AlphaSortedEnumConverter.cs
- ControlCachePolicy.cs
- ConvertersCollection.cs
- SourceExpressionException.cs
- XmlBaseReader.cs
- SchemaMapping.cs
- HTTPNotFoundHandler.cs
- EndpointDiscoveryElement.cs
- InfoCardSymmetricAlgorithm.cs
- BitmapEffectCollection.cs
- DataObject.cs
- UseLicense.cs
- UnlockInstanceAsyncResult.cs
- HyperlinkAutomationPeer.cs
- SyndicationDeserializer.cs
- TracedNativeMethods.cs
- AppDomainAttributes.cs
- SqlBulkCopyColumnMappingCollection.cs
- DescendantQuery.cs
- EncryptedPackage.cs
- ListManagerBindingsCollection.cs
- StringPropertyBuilder.cs
- ReadOnlyPropertyMetadata.cs
- SrgsText.cs
- FillRuleValidation.cs
- SerializationAttributes.cs
- JournalEntryStack.cs
- ClientSettingsStore.cs
- PolicyAssertionCollection.cs
- InputLanguageEventArgs.cs
- Sorting.cs
- XmlCodeExporter.cs
- mongolianshape.cs
- HttpProfileBase.cs
- StringWriter.cs
- MsmqHostedTransportConfiguration.cs
- WorkflowServiceHost.cs
- FlowDocumentPage.cs
- NumberFormatter.cs
- OutputCacheSection.cs
- TreeViewEvent.cs
- DataIdProcessor.cs
- TextTreeTextBlock.cs
- AnnotationDocumentPaginator.cs
- DbMetaDataCollectionNames.cs
- SourceElementsCollection.cs
- SchemaElementDecl.cs
- InstanceLockTracking.cs
- ButtonBaseAutomationPeer.cs
- PeerChannelFactory.cs
- EntityTypeEmitter.cs
- DataGridViewDataConnection.cs
- InvokeHandlers.cs
- DynamicQueryableWrapper.cs
- XmlSchemaSimpleTypeUnion.cs
- ExpressionNode.cs
- Assembly.cs
- SvcMapFileLoader.cs
- MetricEntry.cs
- BitmapEffectvisualstate.cs
- Tracking.cs
- SQLBoolean.cs
- XmlNamespaceMapping.cs