chart控件中游标如何随着移动?
思路很简单,只需要在鼠标进入chart控件时,获取鼠标的位置,然后将数值赋给游标的position属性。
具体实现方法如下:
- 选中chart控件、F4进入属性窗口,在事件中创建MouseMove。
- 获取鼠标位置(2、3、4、5步骤的代码都是在MouseMove中)
double XVuale = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.X);double YVuale = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Y);
- 对鼠标位置进行限制。这里只针对Y进行限制,如果想添加的游标是X方向的就要限制X的范围。限制的主要原因是 ,chart控件中鼠标的位置范围要大于XY轴的数值范围。
if (YVuale > chart1.ChartAreas[0].AxisY.Maximum){YVuale = chart1.ChartAreas[0].AxisY.Maximum;}else if (YVuale < chart1.ChartAreas[0].AxisY.Minimum){YVuale = chart1.ChartAreas[0].AxisY.Minimum;}
- 最后一步就是将鼠标的位置传递给游标的posizion属性:
chart1.ChartAreas[0].CursorY.Position = Trigger;
扩展:
游标总不能一直跟着鼠标动 那样的话显示的游标就是去了意义,实际上更多的情况是,游标随着鼠标移动,当移动到需要的位置时,点击一下鼠标,游标就定在那里,不再随着鼠标移动。
其实只需要对chart控件再添加一个Click事件就可以了,当然还需要一个标志位没用来限制游标的移动。具体如下:
bool AllowCursorYMove = true;//一开始允许游标移动private void chart1_Click(object sender, EventArgs e){AllowCursorYMove = false;//点击鼠标后禁止移动}
既然Click事件限制了游标的移动,那么在chart控件的MouseMove事件中就需要对AllowCursorYMove 进行判断。