Back to Devexpress

GridView.CalcHitInfo(Point) Method

windowsforms-devexpress-dot-xtragrid-dot-views-dot-grid-dot-gridview-dot-calchitinfo-x28-system-dot-drawing-dot-point-x29.md

latest10.1 KB
Original Source

GridView.CalcHitInfo(Point) Method

Returns information about View elements located at a specified point.

Namespace : DevExpress.XtraGrid.Views.Grid

Assembly : DevExpress.XtraGrid.v25.2.dll

NuGet Packages : DevExpress.Win.Grid, DevExpress.Win.Navigation

Declaration

csharp
public GridHitInfo CalcHitInfo(
    Point pt
)
vb
Public Function CalcHitInfo(
    pt As Point
) As GridHitInfo

Parameters

NameTypeDescription
ptPoint

A Point structure specifying test point coordinates relative to the grid control’s top-left corner.

|

Returns

TypeDescription
GridHitInfo

A GridHitInfo object that contains information about View elements located at the test point.

|

Remarks

Use the CalcHitInfo method to determine which element is located at a specified point. For instance, this can be used when handling the View’s Click event to determine which element was clicked. In such instances, you will pass the current mouse pointer’s coordinates as the method’s parameter.

Please refer to the GridHitInfo class description for details on what information is provided by the method’s return value. The Hit Information topic provides general information on obtaining and using hit information.

Note

Detail pattern Views do not contain data and they are never displayed within XtraGrid. So, the CalcHitInfo member must not be invoked for these Views. The CalcHitInfo member can only be used with Views that display real data within the Grid Control. Use the following methods to access these Views with which an end user interacts at runtime.

Example

The following sample code shows how to identify the element located at a specific point using the GridView.CalcHitInfo method.

In the example, the CalcHitInfo method is called when you move the cursor over a Grid Control. The name of the current View element is displayed in the form’s caption.

csharp
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Base.ViewInfo;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
// ...
private void gridControl1_MouseMove(object sender, MouseEventArgs e) {
    GridControl grid = sender as GridControl;
    if (grid == null) return;
    // Get a View at the current point.
    BaseView view = grid.GetViewAt(e.Location);
    if (view == null) return;
    // Retrieve information on the current View element.
    BaseHitInfo baseHI = view.CalcHitInfo(e.Location);
    GridHitInfo gridHI = baseHI as GridHitInfo;
    if (gridHI != null)
        Text = gridHI.HitTest.ToString();
}
vb
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Views.Base.ViewInfo
Imports DevExpress.XtraGrid.Views.Grid.ViewInfo
' ...
Private Sub GridControl1_MouseMove(ByVal sender As System.Object, _
  ByVal e As System.Windows.Forms.MouseEventArgs) _
  Handles GridControl1.MouseMove
    Dim grid As GridControl = sender
    If grid Is Nothing Then
        Return
    End If
    ' Get a View at the current point.
    Dim view As BaseView = grid.GetViewAt(e.Location)
    If view Is Nothing Then
        Return
    End If
    ' Retrieve information on the current View element.
    Dim baseHI As BaseHitInfo = view.CalcHitInfo(e.Location)
    Dim gridHI As GridHitInfo = TryCast(baseHI, GridHitInfo)
    If Not gridHI Is Nothing Then
        Text = gridHI.HitTest.ToString()
    End If
End Sub

The following code snippets (auto-collected from DevExpress Examples) contain references to the CalcHitInfo(Point) method.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

winforms-grid-custom-button-in-column-header/CS/WindowsApplication3/ColumnHeaderExtender.cs#L52

csharp
void OnMouseUp(object sender, MouseEventArgs e) {
    GridHitInfo hitInfo = view.CalcHitInfo(e.Location);
    if(hitInfo.HitTest != GridHitTest.Column) return;

winforms-grid-multi-cell-editing/CS/MultiSelectionEditingHelper.cs#L32

csharp
{
    GridHitInfo hi = view.CalcHitInfo(e.Location);
    if (view.FocusedRowHandle == hi.RowHandle)

winforms-grid-enable-editing-in-group-row-to-change-cell-values/CS/WindowsApplication3/GroupEditProvider.cs#L93

csharp
{
    GridHitInfo hitInfo = view.CalcHitInfo(e.Location);
    if (hitInfo.HitTest == GridHitTest.Row && view.IsGroupRow(hitInfo.RowHandle))

winforms-grid-toggle-checkbox-state-with-one-click/CS/Form1.cs#L43

csharp
{
    GridHitInfo hi = view.CalcHitInfo(e.Location);
    if (hi.InRowCell)

winforms-grid-select-rows-using-mouse-without-ctrl/CS/MultiSelectionHelper.cs#L42

csharp
{
    GridHitInfo hi = _GridView.CalcHitInfo(e.Location);
    if (!hi.InRow)

winforms-grid-custom-button-in-column-header/VB/WindowsApplication3/ColumnHeaderExtender.vb#L52

vb
Private Sub OnMouseUp(ByVal sender As Object, ByVal e As MouseEventArgs)
    Dim hitInfo As GridHitInfo = view.CalcHitInfo(e.Location)
    If hitInfo.HitTest <> GridHitTest.Column Then

winforms-grid-multi-cell-editing/VB/MultiSelectionEditingHelper.vb#L29

vb
If GetInSelectedCell(e) Then
    Dim hi As GridHitInfo = view.CalcHitInfo(e.Location)
    If view.FocusedRowHandle = hi.RowHandle Then

winforms-grid-enable-editing-in-group-row-to-change-cell-values/VB/WindowsApplication3/GroupEditProvider.vb#L93

vb
Private Sub OnMouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
    Dim hitInfo As GridHitInfo = view.CalcHitInfo(e.Location)
    If hitInfo.HitTest = GridHitTest.Row AndAlso view.IsGroupRow(hitInfo.RowHandle) Then

winforms-grid-toggle-checkbox-state-with-one-click/VB/Form1.vb#L40

vb
Private Shared Sub CheckGridViewClick(ByVal e As MouseEventArgs, ByVal view As GridView)
    Dim hi As GridHitInfo = view.CalcHitInfo(e.Location)
    If hi.InRowCell Then

winforms-grid-select-rows-using-mouse-without-ctrl/VB/MultiSelectionHelper.vb#L36

vb
Private Sub OnMouseDown(ByVal e As MouseEventArgs)
    Dim hi As GridHitInfo = _GridView.CalcHitInfo(e.Location)
    If Not hi.InRow Then

See Also

Hit Information

GridView Class

GridView Members

DevExpress.XtraGrid.Views.Grid Namespace