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
- Funcletizer.cs
- BrowserCapabilitiesFactory.cs
- Figure.cs
- RectangleConverter.cs
- CommandHelpers.cs
- ReferenceConverter.cs
- RadialGradientBrush.cs
- TemplateInstanceAttribute.cs
- ExtenderProvidedPropertyAttribute.cs
- _SingleItemRequestCache.cs
- BmpBitmapEncoder.cs
- FamilyTypeface.cs
- XmlSchemaComplexContent.cs
- XPathNodeIterator.cs
- NotifyInputEventArgs.cs
- StateManagedCollection.cs
- ACL.cs
- EdmItemCollection.cs
- MessageEncoder.cs
- DisposableCollectionWrapper.cs
- Attributes.cs
- XslTransformFileEditor.cs
- TextUtf8RawTextWriter.cs
- TextDecoration.cs
- CompositeDataBoundControl.cs
- ToolConsole.cs
- Variant.cs
- SecureConversationVersion.cs
- TypeElementCollection.cs
- Trigger.cs
- CLSCompliantAttribute.cs
- ScriptingAuthenticationServiceSection.cs
- ResourcesGenerator.cs
- WmlLabelAdapter.cs
- EdmFunctionAttribute.cs
- SendKeys.cs
- ProfileModule.cs
- ReverseInheritProperty.cs
- DbInsertCommandTree.cs
- SqlConnection.cs
- WindowsFormsSynchronizationContext.cs
- SqlDuplicator.cs
- IdnMapping.cs
- HandledMouseEvent.cs
- ConversionContext.cs
- StickyNoteContentControl.cs
- FtpWebResponse.cs
- SafeRegistryHandle.cs
- SqlConnectionPoolGroupProviderInfo.cs
- NamespaceInfo.cs
- LogReservationCollection.cs
- DiscoveryExceptionDictionary.cs
- ComponentEditorPage.cs
- GeometryDrawing.cs
- figurelength.cs
- TemplateControlCodeDomTreeGenerator.cs
- EntityStoreSchemaFilterEntry.cs
- DictionaryBase.cs
- EncoderNLS.cs
- Stacktrace.cs
- HtmlContainerControl.cs
- SiteMap.cs
- regiisutil.cs
- ServerValidateEventArgs.cs
- DirectoryInfo.cs
- CompressionTransform.cs
- BinHexEncoding.cs
- SHA512Managed.cs
- SmtpNetworkElement.cs
- StackOverflowException.cs
- CompressionTracing.cs
- DesignTimeVisibleAttribute.cs
- PrimitiveType.cs
- SettingsContext.cs
- DataGridPageChangedEventArgs.cs
- TriggerActionCollection.cs
- WSSecurityPolicy12.cs
- InvalidProgramException.cs
- HandlerBase.cs
- InvariantComparer.cs
- QueryOptionExpression.cs
- TextDecorationUnitValidation.cs
- CategoryNameCollection.cs
- WMIInterop.cs
- GridViewColumnCollectionChangedEventArgs.cs
- FusionWrap.cs
- DockPanel.cs
- NoClickablePointException.cs
- AsyncStreamReader.cs
- Stacktrace.cs
- TraceEventCache.cs
- ScrollBar.cs
- RotateTransform.cs
- FileCodeGroup.cs
- SmtpMail.cs
- SoapSchemaMember.cs
- XmlNullResolver.cs
- DaylightTime.cs
- GenerateHelper.cs
- OutputScope.cs