2

グラフをズームしたい

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

「場所」を認識せず、このエラーが発生します。

4

1 に答える 1

4

そのエラー メッセージは正しいです。EventArgsパラメーターを介してアクセスしているインスタンスであるクラスには、プロパティeが含まれていません。Location

残念ながら、Clickイベントで得られるのはそれだけです。代わりに、プロパティを持つオブジェクトMouseClickを渡すイベントの処理に切り替える必要があります。これはかなり簡単です。ハンドラー メソッドの名前と、ハンドラーをイベントにアタッチするコード (デザイナーが生成したコード ビハインド ファイルにある可能性があります) を更新するだけで済みます。MouseEventArgsLocation

または、プロパティを使用して、マウス ポインターの現在の位置を取得できますCursor.Current。多くの場合、これで十分ですが、次の点に注意してください。

  1. このClickイベントは、マウス イベントに応答して発生するだけでなく、コントロールがフォーカスされてユーザーがEnterキーを押したときなど、他の特定の場合にも発生します。このような場合、マウス ポインターの現在の位置はまったく意味をなさない可能性があります。

    そういうわけで、MouseClickイベントはより良い選択肢です。無料で位置情報を提供するだけでなく、プロパティが意味を持つ場合にのみ、マウス イベントに応答して発生します。Location

  2. Clickユーザーは、イベントが生成されてからイベント ハンドラーが実行されるまでの間にマウスを動かした可能性がありCursor.Currentます。つまり、ユーザーが最初にクリックした場所とは異なる場所が返されます。ほとんどの場合、これは重要な距離ではありませんが、そうなる可能性があります。

于 2013-07-22T12:21:34.157 に答える