在Microsoft图表控件中启用鼠标滚轮缩放

如何使用鼠标滚轮启用Microsoft图表控件缩放

我有以下代码,我需要知道如何制作此活动? 在哪个class级..

private void chData_MouseWheel(object sender, MouseEventArgs e) { try { if (e.Delta  0) { double xMin = chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum; double xMax = chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum; double yMin = chart1.ChartAreas[0].AxisY.ScaleView.ViewMinimum; double yMax = chart1.ChartAreas[0].AxisY.ScaleView.ViewMaximum; double posXStart = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) - (xMax - xMin) / 4; double posXFinish = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin) / 4; double posYStart = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin) / 4; double posYFinish = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin) / 4; chart1.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish); chart1.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart, posYFinish); } } catch { } } 

我认为上面的答案应该是,

chData.MouseWheel + = new MouseEventHandler(chData_MouseWheel);

但根据我发现的结果,只要您没有将焦点设置在代码中的图表控件上,图表的鼠标滚轮就不起作用。 因此,我使用图表控件的鼠标输入将焦点设置为图表控件的图表和鼠标离开事件,以将控件设置回其父控件。

因此,您需要在代码中添加以下行,绑定鼠标左键和鼠标相应地输入图表控件的事件,并添加上面的行。

  private void chartTracking_MouseEnter(object sender, EventArgs e) { this.chartTracking.Focus(); } private void chartTracking_MouseLeave(object sender, EventArgs e) { this.chartTracking.Parent.Focus(); } 

你拥有的是MouseWheel事件的处理程序方法。 您需要将处理程序方法附加到图表控件的MouseWheel事件。 从方法签名,我假设您的图表控件名为chData ,因此您可以在窗体的构造函数中使用以下代码:

 chData.MouseWheel += new EventHandler(chData_MouseWheel); 

当然,您也可以在设计时将处理程序与事件相关联。 为此,请使用“属性”窗口并单击工具栏中的闪电以切换到“事件”视图。 然后找到MouseWheel事件,单击下拉箭头,然后选择处理程序方法的签名。 这将使设计人员将上述代码编写到表单的代码隐藏文件中。

除此之外,你的代码中还有一个巨大的红旗:一个空的catch块。 如果您没有处理exception或使用它做任何事情,那么您不应该抓住它。 这不是口袋妖怪,没有奖励抓住他们所有。