> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ninjatrader.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ninjatrader.com/_mcp/server.

# OnMouseDown()

## Definition

An event driven method which is called any time the mouse pointer over the chart control has the mouse button pressed.

## Method Return Value

This method does not return a value.

For a combined single click operation, i.e. mouse down click, move and release the dataPoint reported will always be the initial starting one.

## Syntax

You must override the method in your Drawing Tool with the following syntax.

`public override void OnMouseDown(ChartControl chartControl, ChartPanel chartPanel, ChartScale chartScale, ChartAnchor dataPoint) \{ \}`

## Method Parameters

| Parameter        | Description                                                                                                              |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **chartControl** | A [ChartControl](/developer/desktop-sdk/references/common/charts/chartcontrol) representing the x-axis                   |
| **chartPanel**   | A [ChartPanel](/developer/desktop-sdk/references/common/charts/chartpanel) representing the the panel for the chart      |
| **chartScale**   | A [ChartScale](/developer/desktop-sdk/references/common/charts/chartscale) representing the y-axis                       |
| **dataPoint**    | A [ChartAnchor](/developer/desktop-sdk/references/drawing-tools/chartanchor) representing a point where the user clicked |

## Examples

```csharp
public override void OnMouseDown(ChartControl chartControl, ChartPanel chartPanel, ChartScale chartScale, ChartAnchor dataPoint)
{
   switch (DrawingState)
   {
     case DrawingState.Building:
         dataPoint.CopyDataValues(Anchor);
         Anchor.IsEditing   = false;
         DrawingState     = DrawingState.Normal;
         IsSelected         = false;
         break;
     case DrawingState.Normal:
         // make sure they clicked near us. use GetCursor incase something has more than one point
         Point point = dataPoint.GetPoint(chartControl, chartPanel, chartScale);
         if (GetCursor(chartControl, chartPanel, chartScale, point) != null)
           DrawingState = DrawingState.Moving;
         else
           IsSelected = false;
         break;
   }
}
```