Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / DataGridViewAccessibleObject.cs / 1 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PresentationAppDomainManager.cs
- milexports.cs
- ZipIOModeEnforcingStream.cs
- SqlBuffer.cs
- DistinctQueryOperator.cs
- ConfigurationManager.cs
- XmlSchemaInclude.cs
- UniformGrid.cs
- PartialCachingAttribute.cs
- UIElementPropertyUndoUnit.cs
- UnicodeEncoding.cs
- BrowserCapabilitiesFactoryBase.cs
- StringHandle.cs
- SessionStateContainer.cs
- GeneralTransform2DTo3DTo2D.cs
- WebPartsPersonalizationAuthorization.cs
- Nullable.cs
- UnicodeEncoding.cs
- CodeLinePragma.cs
- LicFileLicenseProvider.cs
- TempEnvironment.cs
- DbBuffer.cs
- PageBuildProvider.cs
- SmiRequestExecutor.cs
- WebPartConnectionsConfigureVerb.cs
- DesignerSerializationVisibilityAttribute.cs
- InputLangChangeEvent.cs
- SortQueryOperator.cs
- ContractTypeNameCollection.cs
- IdentityReference.cs
- IndexOutOfRangeException.cs
- SubMenuStyleCollection.cs
- XmlNamespaceMapping.cs
- streamingZipPartStream.cs
- StructureChangedEventArgs.cs
- SignedPkcs7.cs
- Comparer.cs
- DispatcherProcessingDisabled.cs
- OracleConnectionStringBuilder.cs
- XmlParser.cs
- TextBlock.cs
- NodeLabelEditEvent.cs
- XmlC14NWriter.cs
- ContextStaticAttribute.cs
- Point3DConverter.cs
- ICspAsymmetricAlgorithm.cs
- ArglessEventHandlerProxy.cs
- CompareValidator.cs
- BitmapEffectDrawingContextState.cs
- OnOperation.cs
- Light.cs
- Logging.cs
- ViewCellSlot.cs
- NativeWindow.cs
- DataGridViewCheckBoxCell.cs
- Property.cs
- EdmType.cs
- WebPartTransformerCollection.cs
- SafeNativeMethods.cs
- FileLogRecordEnumerator.cs
- DefaultValidator.cs
- WorkflowMarkupSerializationManager.cs
- MappingException.cs
- TemplateBindingExpression.cs
- MachinePropertyVariants.cs
- SqlBooleanMismatchVisitor.cs
- Attributes.cs
- DefaultValueConverter.cs
- CompositeFontFamily.cs
- OleDbWrapper.cs
- CodeMethodInvokeExpression.cs
- AssertUtility.cs
- CodeGenerationManager.cs
- SynchronizationLockException.cs
- DBDataPermissionAttribute.cs
- ProjectionCamera.cs
- LongValidator.cs
- XmlSchemaRedefine.cs
- BadImageFormatException.cs
- CommonXSendMessage.cs
- UnsafeNativeMethods.cs
- GenericEnumConverter.cs
- XmlNamespaceMapping.cs
- ErrorStyle.cs
- ToggleProviderWrapper.cs
- SQLInt32.cs
- AsyncInvokeOperation.cs
- WebPartConnectionsCancelVerb.cs
- ChangeBlockUndoRecord.cs
- DesignerDataTable.cs
- CompilerGeneratedAttribute.cs
- Stacktrace.cs
- WorkflowServiceHostFactory.cs
- ConfigurationPropertyCollection.cs
- BindingOperations.cs
- CompiledXpathExpr.cs
- ScriptReference.cs
- ConnectionPoint.cs
- EntityAdapter.cs
- DropDownButton.cs