Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / DataGridViewAccessibleObject.cs / 1305376 / DataGridViewAccessibleObject.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System.Security.Permissions;
using System.Diagnostics.CodeAnalysis;
using System.Drawing;
namespace System.Windows.Forms
{
public partial class DataGridView
{
[
System.Runtime.InteropServices.ComVisible(true)
]
///
protected class DataGridViewAccessibleObject : ControlAccessibleObject
{
DataGridView owner;
DataGridViewTopRowAccessibleObject topRowAccessibilityObject = null;
DataGridViewSelectedCellsAccessibleObject selectedCellsAccessibilityObject = null;
///
public DataGridViewAccessibleObject(DataGridView owner)
: base(owner)
{
this.owner = owner;
}
///
public override string Name
{
[SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters")] // Don't localize string "DataGridView".
get
{
string name = this.Owner.AccessibleName;
if (!String.IsNullOrEmpty(name))
{
return name;
}
else
{
// The default name should not be localized.
return "DataGridView";
}
}
}
///
public override AccessibleRole Role
{
get
{
AccessibleRole role = owner.AccessibleRole;
if (role != AccessibleRole.Default)
{
return role;
}
// the Default AccessibleRole is Table
return AccessibleRole.Table;
}
}
private AccessibleObject TopRowAccessibilityObject
{
get
{
if (this.topRowAccessibilityObject == null)
{
this.topRowAccessibilityObject = new DataGridViewTopRowAccessibleObject(this.owner);
}
return this.topRowAccessibilityObject;
}
}
private AccessibleObject SelectedCellsAccessibilityObject
{
get
{
if (this.selectedCellsAccessibilityObject == null)
{
this.selectedCellsAccessibilityObject = new DataGridViewSelectedCellsAccessibleObject(this.owner);
}
return this.selectedCellsAccessibilityObject;
}
}
///
public override AccessibleObject GetChild(int index)
{
if (this.owner.Columns.Count == 0)
{
System.Diagnostics.Debug.Assert(this.GetChildCount() == 0);
return null;
}
if (index < 1 && this.owner.ColumnHeadersVisible)
{
return this.TopRowAccessibilityObject;
}
if (this.owner.ColumnHeadersVisible)
{
index--;
}
if (index < this.owner.Rows.GetRowCount(DataGridViewElementStates.Visible))
{
int actualRowIndex = this.owner.Rows.DisplayIndexToRowIndex(index);
return this.owner.Rows[actualRowIndex].AccessibilityObject;
}
index -= this.owner.Rows.GetRowCount(DataGridViewElementStates.Visible);
if (this.owner.horizScrollBar.Visible)
{
if (index == 0)
{
return this.owner.horizScrollBar.AccessibilityObject;
}
else
{
index--;
}
}
if (this.owner.vertScrollBar.Visible)
{
if (index == 0)
{
return this.owner.vertScrollBar.AccessibilityObject;
}
}
return null;
}
///
public override int GetChildCount()
{
if (this.owner.Columns.Count == 0)
{
return 0;
}
int childCount = this.owner.Rows.GetRowCount(DataGridViewElementStates.Visible);
// the column header collection Accessible Object
if (this.owner.ColumnHeadersVisible)
{
childCount++;
}
if (this.owner.horizScrollBar.Visible)
{
childCount++;
}
if (this.owner.vertScrollBar.Visible)
{
childCount++;
}
return childCount;
}
///
public override AccessibleObject GetFocused()
{
if (this.owner.Focused && this.owner.CurrentCell != null)
{
return this.owner.CurrentCell.AccessibilityObject;
}
else
{
return null;
}
}
///
public override AccessibleObject GetSelected()
{
return this.SelectedCellsAccessibilityObject;
}
///
public override AccessibleObject HitTest(int x, int y)
{
Point pt = this.owner.PointToClient(new Point(x, y));
HitTestInfo hti = this.owner.HitTest(pt.X, pt.Y);
switch (hti.Type)
{
case DataGridViewHitTestType.Cell:
return this.owner.Rows[hti.RowIndex].Cells[hti.ColumnIndex].AccessibilityObject;
case DataGridViewHitTestType.ColumnHeader:
// map the column index to the actual display index
int actualDisplayIndex = this.owner.Columns.ColumnIndexToActualDisplayIndex(hti.ColumnIndex, DataGridViewElementStates.Visible);
if (this.owner.RowHeadersVisible)
{
// increment the childIndex because the first child in the TopRowAccessibleObject is the TopLeftHeaderCellAccObj
return this.TopRowAccessibilityObject.GetChild(actualDisplayIndex + 1);
}
else
{
return this.TopRowAccessibilityObject.GetChild(actualDisplayIndex);
}
case DataGridViewHitTestType.RowHeader:
return this.owner.Rows[hti.RowIndex].AccessibilityObject;
case DataGridViewHitTestType.TopLeftHeader:
return this.owner.TopLeftHeaderCell.AccessibilityObject;
case DataGridViewHitTestType.VerticalScrollBar:
return this.owner.VerticalScrollBar.AccessibilityObject;
case DataGridViewHitTestType.HorizontalScrollBar:
return this.owner.HorizontalScrollBar.AccessibilityObject;
default:
return null;
}
}
///
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public override AccessibleObject Navigate(AccessibleNavigation navigationDirection)
{
switch (navigationDirection)
{
case AccessibleNavigation.FirstChild:
return this.GetChild(0);
case AccessibleNavigation.LastChild:
return this.GetChild(this.GetChildCount() - 1);
default:
return null;
}
}
/* [....]: why is this method defined and not used?
// this method is called when the accessible object needs to be reset
// Example: when the user changes the display index on a column or when the user modifies the column collection
internal void Reset()
{
this.NotifyClients(AccessibleEvents.Reorder);
}
*/
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System.Security.Permissions;
using System.Diagnostics.CodeAnalysis;
using System.Drawing;
namespace System.Windows.Forms
{
public partial class DataGridView
{
[
System.Runtime.InteropServices.ComVisible(true)
]
///
protected class DataGridViewAccessibleObject : ControlAccessibleObject
{
DataGridView owner;
DataGridViewTopRowAccessibleObject topRowAccessibilityObject = null;
DataGridViewSelectedCellsAccessibleObject selectedCellsAccessibilityObject = null;
///
public DataGridViewAccessibleObject(DataGridView owner)
: base(owner)
{
this.owner = owner;
}
///
public override string Name
{
[SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters")] // Don't localize string "DataGridView".
get
{
string name = this.Owner.AccessibleName;
if (!String.IsNullOrEmpty(name))
{
return name;
}
else
{
// The default name should not be localized.
return "DataGridView";
}
}
}
///
public override AccessibleRole Role
{
get
{
AccessibleRole role = owner.AccessibleRole;
if (role != AccessibleRole.Default)
{
return role;
}
// the Default AccessibleRole is Table
return AccessibleRole.Table;
}
}
private AccessibleObject TopRowAccessibilityObject
{
get
{
if (this.topRowAccessibilityObject == null)
{
this.topRowAccessibilityObject = new DataGridViewTopRowAccessibleObject(this.owner);
}
return this.topRowAccessibilityObject;
}
}
private AccessibleObject SelectedCellsAccessibilityObject
{
get
{
if (this.selectedCellsAccessibilityObject == null)
{
this.selectedCellsAccessibilityObject = new DataGridViewSelectedCellsAccessibleObject(this.owner);
}
return this.selectedCellsAccessibilityObject;
}
}
///
public override AccessibleObject GetChild(int index)
{
if (this.owner.Columns.Count == 0)
{
System.Diagnostics.Debug.Assert(this.GetChildCount() == 0);
return null;
}
if (index < 1 && this.owner.ColumnHeadersVisible)
{
return this.TopRowAccessibilityObject;
}
if (this.owner.ColumnHeadersVisible)
{
index--;
}
if (index < this.owner.Rows.GetRowCount(DataGridViewElementStates.Visible))
{
int actualRowIndex = this.owner.Rows.DisplayIndexToRowIndex(index);
return this.owner.Rows[actualRowIndex].AccessibilityObject;
}
index -= this.owner.Rows.GetRowCount(DataGridViewElementStates.Visible);
if (this.owner.horizScrollBar.Visible)
{
if (index == 0)
{
return this.owner.horizScrollBar.AccessibilityObject;
}
else
{
index--;
}
}
if (this.owner.vertScrollBar.Visible)
{
if (index == 0)
{
return this.owner.vertScrollBar.AccessibilityObject;
}
}
return null;
}
///
public override int GetChildCount()
{
if (this.owner.Columns.Count == 0)
{
return 0;
}
int childCount = this.owner.Rows.GetRowCount(DataGridViewElementStates.Visible);
// the column header collection Accessible Object
if (this.owner.ColumnHeadersVisible)
{
childCount++;
}
if (this.owner.horizScrollBar.Visible)
{
childCount++;
}
if (this.owner.vertScrollBar.Visible)
{
childCount++;
}
return childCount;
}
///
public override AccessibleObject GetFocused()
{
if (this.owner.Focused && this.owner.CurrentCell != null)
{
return this.owner.CurrentCell.AccessibilityObject;
}
else
{
return null;
}
}
///
public override AccessibleObject GetSelected()
{
return this.SelectedCellsAccessibilityObject;
}
///
public override AccessibleObject HitTest(int x, int y)
{
Point pt = this.owner.PointToClient(new Point(x, y));
HitTestInfo hti = this.owner.HitTest(pt.X, pt.Y);
switch (hti.Type)
{
case DataGridViewHitTestType.Cell:
return this.owner.Rows[hti.RowIndex].Cells[hti.ColumnIndex].AccessibilityObject;
case DataGridViewHitTestType.ColumnHeader:
// map the column index to the actual display index
int actualDisplayIndex = this.owner.Columns.ColumnIndexToActualDisplayIndex(hti.ColumnIndex, DataGridViewElementStates.Visible);
if (this.owner.RowHeadersVisible)
{
// increment the childIndex because the first child in the TopRowAccessibleObject is the TopLeftHeaderCellAccObj
return this.TopRowAccessibilityObject.GetChild(actualDisplayIndex + 1);
}
else
{
return this.TopRowAccessibilityObject.GetChild(actualDisplayIndex);
}
case DataGridViewHitTestType.RowHeader:
return this.owner.Rows[hti.RowIndex].AccessibilityObject;
case DataGridViewHitTestType.TopLeftHeader:
return this.owner.TopLeftHeaderCell.AccessibilityObject;
case DataGridViewHitTestType.VerticalScrollBar:
return this.owner.VerticalScrollBar.AccessibilityObject;
case DataGridViewHitTestType.HorizontalScrollBar:
return this.owner.HorizontalScrollBar.AccessibilityObject;
default:
return null;
}
}
///
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public override AccessibleObject Navigate(AccessibleNavigation navigationDirection)
{
switch (navigationDirection)
{
case AccessibleNavigation.FirstChild:
return this.GetChild(0);
case AccessibleNavigation.LastChild:
return this.GetChild(this.GetChildCount() - 1);
default:
return null;
}
}
/* [....]: why is this method defined and not used?
// this method is called when the accessible object needs to be reset
// Example: when the user changes the display index on a column or when the user modifies the column collection
internal void Reset()
{
this.NotifyClients(AccessibleEvents.Reorder);
}
*/
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TraceSection.cs
- DocComment.cs
- TextParagraphProperties.cs
- DelimitedListTraceListener.cs
- InputQueueChannel.cs
- HttpHandlerAction.cs
- CheckBoxList.cs
- AssertFilter.cs
- UIElementParaClient.cs
- XmlSchemaProviderAttribute.cs
- GlyphRunDrawing.cs
- StrongNameKeyPair.cs
- StoreAnnotationsMap.cs
- _SafeNetHandles.cs
- ProxyHwnd.cs
- ClientScriptItem.cs
- DataStorage.cs
- AuthenticationSection.cs
- ContextMarshalException.cs
- panel.cs
- RowToFieldTransformer.cs
- RadialGradientBrush.cs
- EtwTrace.cs
- ResourceDisplayNameAttribute.cs
- XPathChildIterator.cs
- ParenthesizePropertyNameAttribute.cs
- Bezier.cs
- MethodAccessException.cs
- CharacterHit.cs
- RootNamespaceAttribute.cs
- PeerUnsafeNativeCryptMethods.cs
- PropertyDescriptorCollection.cs
- GeneralTransform3D.cs
- FileFormatException.cs
- HintTextMaxWidthConverter.cs
- SqlFunctionAttribute.cs
- RecordManager.cs
- TableChangeProcessor.cs
- ADRoleFactoryConfiguration.cs
- OleDbInfoMessageEvent.cs
- TableLayoutStyle.cs
- WFItemsToSpacerVisibility.cs
- WebPartConnectionsConfigureVerb.cs
- ISO2022Encoding.cs
- PropertyMapper.cs
- DataGridItemCollection.cs
- UIElementCollection.cs
- QueryableDataSourceView.cs
- ExceptionUtility.cs
- COAUTHIDENTITY.cs
- ServerValidateEventArgs.cs
- SafeHandles.cs
- DocumentViewerAutomationPeer.cs
- FontCollection.cs
- GeneratedCodeAttribute.cs
- ContentPosition.cs
- HttpCacheVary.cs
- ZipIOExtraFieldPaddingElement.cs
- PeerNameResolver.cs
- TreeViewImageIndexConverter.cs
- RegistryPermission.cs
- PathTooLongException.cs
- UniqueContractNameValidationBehavior.cs
- InstrumentationTracker.cs
- InputBuffer.cs
- ColumnMapCopier.cs
- FreezableCollection.cs
- QueueProcessor.cs
- InheritablePropertyChangeInfo.cs
- FlowLayoutSettings.cs
- ProcessRequestArgs.cs
- HttpRequest.cs
- WindowsListView.cs
- XmlUtf8RawTextWriter.cs
- EmptyStringExpandableObjectConverter.cs
- EncoderReplacementFallback.cs
- AxisAngleRotation3D.cs
- DiagnosticSection.cs
- HandlerFactoryCache.cs
- ExtenderControl.cs
- FindResponse.cs
- WebServiceParameterData.cs
- Pool.cs
- ReverseComparer.cs
- VirtualPath.cs
- DetailsViewModeEventArgs.cs
- RouteParameter.cs
- BitmapImage.cs
- RemotingServices.cs
- Parser.cs
- DataContractAttribute.cs
- ObjectDataSourceFilteringEventArgs.cs
- LayoutEngine.cs
- MediaElementAutomationPeer.cs
- IndentedWriter.cs
- DispatcherExceptionEventArgs.cs
- DataTrigger.cs
- ValidationErrorCollection.cs
- XmlException.cs
- LZCodec.cs