Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / InterOp / HwndSourceKeyboardInputSite.cs / 1 / 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.
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
- WebPartConnection.cs
- DataGridTablesFactory.cs
- GridViewHeaderRowPresenter.cs
- TableChangeProcessor.cs
- UndoManager.cs
- COM2Properties.cs
- RuleSetCollection.cs
- LinqDataSourceSelectEventArgs.cs
- HttpFileCollection.cs
- Slider.cs
- ShaperBuffers.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- InstanceCompleteException.cs
- WorkflowMarkupSerializer.cs
- BasicBrowserDialog.designer.cs
- WasAdminWrapper.cs
- BamlResourceContent.cs
- RichTextBoxDesigner.cs
- RepeaterCommandEventArgs.cs
- ExtractedStateEntry.cs
- SecureUICommand.cs
- DataTableReader.cs
- Helper.cs
- ColumnHeader.cs
- connectionpool.cs
- XmlObjectSerializerContext.cs
- EntitySqlQueryBuilder.cs
- RepeatButtonAutomationPeer.cs
- TableCellCollection.cs
- InitialServerConnectionReader.cs
- TabOrder.cs
- DodSequenceMerge.cs
- ItemsPanelTemplate.cs
- SqlDataSourceCommandEventArgs.cs
- GridViewDeleteEventArgs.cs
- XmlSchemaInferenceException.cs
- ToolBarPanel.cs
- DispatcherExceptionEventArgs.cs
- Point4D.cs
- ProbeDuplex11AsyncResult.cs
- _Semaphore.cs
- PropertyMapper.cs
- RealizedColumnsBlock.cs
- MimeFormatter.cs
- ExtendedProperty.cs
- SimpleWebHandlerParser.cs
- _RequestCacheProtocol.cs
- TraceContextRecord.cs
- cookiecontainer.cs
- StringFreezingAttribute.cs
- OdbcParameterCollection.cs
- RelationshipWrapper.cs
- DataSourceHelper.cs
- BigInt.cs
- DataView.cs
- SuppressMergeCheckAttribute.cs
- HttpModuleCollection.cs
- Rijndael.cs
- DynamicPropertyReader.cs
- DataControlExtensions.cs
- WebPartTransformer.cs
- StructureChangedEventArgs.cs
- AuditLogLocation.cs
- ProgressBar.cs
- DataKey.cs
- regiisutil.cs
- DataTable.cs
- ScrollChrome.cs
- MaskedTextBox.cs
- CodeSubDirectory.cs
- COAUTHIDENTITY.cs
- RepeaterItemEventArgs.cs
- RowType.cs
- RenderData.cs
- ItemMap.cs
- TemplateControlParser.cs
- SqlCachedBuffer.cs
- ThreadStateException.cs
- UnaryNode.cs
- RelationshipFixer.cs
- MenuItemStyle.cs
- Mapping.cs
- SplitterPanel.cs
- TrustManager.cs
- Calendar.cs
- ColumnMapTranslator.cs
- ServerTooBusyException.cs
- DocumentGridContextMenu.cs
- RuleProcessor.cs
- SqlLiftIndependentRowExpressions.cs
- HttpRawResponse.cs
- TokenBasedSet.cs
- Application.cs
- WebResponse.cs
- ContentType.cs
- GlyphRunDrawing.cs
- XmlSchemaComplexType.cs
- log.cs
- FormatConvertedBitmap.cs
- ComPlusTypeValidator.cs