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
- RegularExpressionValidator.cs
- FileCodeGroup.cs
- OleTxTransactionInfo.cs
- CodeConstructor.cs
- ConnectionConsumerAttribute.cs
- ApplicationCommands.cs
- DataTableCollection.cs
- PocoEntityKeyStrategy.cs
- DataListCommandEventArgs.cs
- AnnotationObservableCollection.cs
- OdbcHandle.cs
- ExpressionEditorAttribute.cs
- DiffuseMaterial.cs
- DataGridSortCommandEventArgs.cs
- ResponseBodyWriter.cs
- ComplexObject.cs
- CheckoutException.cs
- CommandPlan.cs
- Attributes.cs
- Duration.cs
- XPathAncestorQuery.cs
- WaitHandle.cs
- FilterQuery.cs
- dbenumerator.cs
- NameTable.cs
- AutomationIdentifierGuids.cs
- NumericUpDown.cs
- XmlUrlResolver.cs
- TypeUtil.cs
- RangeBaseAutomationPeer.cs
- SparseMemoryStream.cs
- HuffModule.cs
- RichTextBox.cs
- SafeFileMapViewHandle.cs
- NominalTypeEliminator.cs
- EditorZone.cs
- MarkedHighlightComponent.cs
- DotAtomReader.cs
- PolicyLevel.cs
- Stack.cs
- FontFamily.cs
- Byte.cs
- UnsafeNativeMethodsMilCoreApi.cs
- MsdtcWrapper.cs
- IdentityManager.cs
- QuadraticEase.cs
- Cursor.cs
- PenLineJoinValidation.cs
- srgsitem.cs
- FileChangesMonitor.cs
- Utils.cs
- WebServiceReceive.cs
- safemediahandle.cs
- GeneralTransformCollection.cs
- HtmlTernaryTree.cs
- ExtendedProperty.cs
- OAVariantLib.cs
- ConfigurationConverterBase.cs
- RuleSettings.cs
- Point3DConverter.cs
- EventProviderClassic.cs
- RegisteredScript.cs
- BamlWriter.cs
- CommandBindingCollection.cs
- MailSettingsSection.cs
- Roles.cs
- DataColumnMapping.cs
- WorkflowMarkupSerializer.cs
- TextClipboardData.cs
- Font.cs
- XmlDataCollection.cs
- DataServiceProviderWrapper.cs
- PartialCachingAttribute.cs
- PasswordRecovery.cs
- ExpressionNormalizer.cs
- BezierSegment.cs
- WebServiceResponseDesigner.cs
- EntityDataSourceSelectedEventArgs.cs
- AddInServer.cs
- TempEnvironment.cs
- ExpressionPrefixAttribute.cs
- DocumentViewerAutomationPeer.cs
- AssertFilter.cs
- XmlAttributeOverrides.cs
- MD5.cs
- DirectoryInfo.cs
- TimelineClockCollection.cs
- CharAnimationBase.cs
- GroupByExpressionRewriter.cs
- AlternateViewCollection.cs
- ListViewItem.cs
- HtmlTextBoxAdapter.cs
- MaterialCollection.cs
- XmlDictionaryReader.cs
- FontCacheUtil.cs
- LinearKeyFrames.cs
- FlowDocumentPaginator.cs
- DataGrid.cs
- BrowserTree.cs
- UntypedNullExpression.cs