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
- PackUriHelper.cs
- XsltSettings.cs
- FormViewPageEventArgs.cs
- CellTreeSimplifier.cs
- LocationSectionRecord.cs
- SessionEndingCancelEventArgs.cs
- ServiceBehaviorElement.cs
- FrameworkElementFactoryMarkupObject.cs
- DictionaryContent.cs
- BitmapCodecInfoInternal.cs
- Set.cs
- AvTraceFormat.cs
- ChangeInterceptorAttribute.cs
- XmlTypeMapping.cs
- ZoomPercentageConverter.cs
- ContextMenu.cs
- OracleParameterCollection.cs
- TogglePattern.cs
- keycontainerpermission.cs
- MsmqAuthenticationMode.cs
- odbcmetadatacollectionnames.cs
- ExpressionEditor.cs
- RightsManagementInformation.cs
- TypedRowGenerator.cs
- FixedSOMTextRun.cs
- WindowsFormsHostAutomationPeer.cs
- AtomContentProperty.cs
- MsmqChannelFactory.cs
- Substitution.cs
- DataGridViewCheckBoxCell.cs
- BaseCollection.cs
- GradientStop.cs
- EpmCustomContentWriterNodeData.cs
- DbDataSourceEnumerator.cs
- Pair.cs
- WebPartTransformerCollection.cs
- DataGridCommandEventArgs.cs
- System.Data_BID.cs
- EntityContainerRelationshipSetEnd.cs
- HttpDictionary.cs
- RegexCharClass.cs
- ModelVisual3D.cs
- FontFamilyConverter.cs
- UIElement.cs
- SafeProcessHandle.cs
- ValidationSummary.cs
- ListViewSortEventArgs.cs
- FragmentNavigationEventArgs.cs
- ExtentCqlBlock.cs
- WinFormsUtils.cs
- WindowsFormsHostAutomationPeer.cs
- InputReport.cs
- PeerNameRecord.cs
- RepeaterItemCollection.cs
- StatementContext.cs
- StyleReferenceConverter.cs
- ForceCopyBuildProvider.cs
- Page.cs
- EventLogPermission.cs
- MembershipSection.cs
- ColumnMap.cs
- IndexObject.cs
- VoiceChangeEventArgs.cs
- GenericWebPart.cs
- DoubleLinkList.cs
- Axis.cs
- AxWrapperGen.cs
- FormConverter.cs
- MobileComponentEditorPage.cs
- XmlAttributeProperties.cs
- HtmlButton.cs
- HttpProfileBase.cs
- GenericUriParser.cs
- StringHelper.cs
- DispatchChannelSink.cs
- SafeCloseHandleCritical.cs
- FileBasedResourceGroveler.cs
- QilTargetType.cs
- fixedPageContentExtractor.cs
- DebuggerService.cs
- CompositeCollectionView.cs
- MaskedTextBoxDesigner.cs
- WindowInteractionStateTracker.cs
- ButtonColumn.cs
- GregorianCalendar.cs
- Int32Rect.cs
- ImageClickEventArgs.cs
- PrivateFontCollection.cs
- DataKey.cs
- ExceptionCollection.cs
- ParentQuery.cs
- WebServiceHost.cs
- MenuScrollingVisibilityConverter.cs
- Gdiplus.cs
- FontWeight.cs
- SQLDouble.cs
- ProjectionNode.cs
- ProcessStartInfo.cs
- XPathDocument.cs
- DynamicQueryableWrapper.cs