'System.EventArgs'不包含'Location'的定义

时间:2013-07-22 12:17:00

标签: c# zooming eventargs

我想缩放图表

 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);
}

它无法识别“位置”并给出此错误。

1 个答案:

答案 0 :(得分:4)

该错误消息是正确的。 EventArgs类(您通过e参数访问的实例)不包含Location属性。

不幸的是,这就是Click事件的全部内容。您需要切换到处理MouseClick事件,它会传递MouseEventArgs对象,其Location属性。这很简单,您只需要更新处理程序方法的名称以及将处理程序附加到事件的代码(可能位于设计器生成的代码隐藏文件中)。

或者,您可以使用Cursor.Current属性检索鼠标指针的当前位置。这通常“足够好”,但请记住以下几点:

  1. Click事件不仅是为响应鼠标事件而引发的,而且在某些其他情况下也是如此,例如当控件聚焦并且用户按下 Enter 键时。在这些情况下,鼠标指针的当前位置可能完全没有意义。

    这就是为什么MouseClick事件是更好的选择。它不仅免费为您提供位置信息,而且当Location属性有意义时,它仅响应鼠标事件而

  2. 用户可以在生成Click事件的时间和事件处理程序执行的时间之间移动鼠标,这意味着Cursor.Current返回的位置与用户最初点击。在大多数情况下,这不是一个很大的距离,但它可能是。