';System.EventArgs';不包含';位置';

本文关键字:位置 包含 System EventArgs | 更新日期: 2023-09-27 18:24:08

我想缩放图表

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

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

';System.EventArgs';不包含';位置';

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

不幸的是,Click事件仅此而已。您需要切换到处理MouseClick事件,该事件传递具有Location属性的MouseEventArgs对象。这很简单,只需要更新处理程序方法的名称和将处理程序附加到事件的代码(可能位于设计器生成的代码隐藏文件中)。

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

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

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

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