我想缩放图表
private void toolStripButtonZoom_Click(object sender, System.EventArgs e)
{
double posXStart = chartMain.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) - (xMax - xMin) / 0.5;
double posXFinish = chartMain.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin) / 0.5;
double posYStart = chartMain.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin) / 0.5;
double posYFinish = chartMain.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin) / 0.5;
chartMain.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish);
chartMain.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart, posYFinish);
}
它无法识别“位置”并给出此错误。
答案 0 :(得分:4)
该错误消息是正确的。 EventArgs
类(您通过e
参数访问的实例)不包含Location
属性。
不幸的是,这就是Click
事件的全部内容。您需要切换到处理MouseClick
事件,它会传递MouseEventArgs
对象,其Location
属性。这很简单,您只需要更新处理程序方法的名称以及将处理程序附加到事件的代码(可能位于设计器生成的代码隐藏文件中)。
或者,您可以使用Cursor.Current
属性检索鼠标指针的当前位置。这通常“足够好”,但请记住以下几点:
Click
事件不仅是为响应鼠标事件而引发的,而且在某些其他情况下也是如此,例如当控件聚焦并且用户按下 Enter 键时。在这些情况下,鼠标指针的当前位置可能完全没有意义。
这就是为什么MouseClick
事件是更好的选择。它不仅免费为您提供位置信息,而且当Location
属性有意义时,它仅响应鼠标事件而 。
用户可以在生成Click
事件的时间和事件处理程序执行的时间之间移动鼠标,这意味着Cursor.Current
返回的位置与用户最初点击。在大多数情况下,这不是一个很大的距离,但它可能是。