我使用单个ZedGraphControl来显示 2 条曲线,一条在主YAxis上,另一条在Y2Axis上。我想这样当用户手动放大数据时,只有 YAxis 上的比例会发生变化。
我找不到任何方法来锁定 Y2Axis 实际上首先防止更改。然后我认为我可以撤消对AxisChangeEvent中的轴的任何更改,但再次更改此事件的调用,从而导致无限循环。
我使用单个ZedGraphControl来显示 2 条曲线,一条在主YAxis上,另一条在Y2Axis上。我想这样当用户手动放大数据时,只有 YAxis 上的比例会发生变化。
我找不到任何方法来锁定 Y2Axis 实际上首先防止更改。然后我认为我可以撤消对AxisChangeEvent中的轴的任何更改,但再次更改此事件的调用,从而导致无限循环。
以本网站的典型方式,我在尝试正确提出问题时想出了一个答案。
我只是在 AxisChangeEvent 的开头设置了一个布尔标志,以防止递归调用。然后重置 Y2Axis 的比例:
private bool resizingAxis = false;
void GraphPane_AxisChangeEvent(ZedGraph.GraphPane pane)
{
if (!resizingAxis)
{
resizingAxis = true;
this.zedGraphControl1.GraphPane.Y2Axis.ResetAutoScale(pane, this.CreateGraphics());
resizingAxis = false;
}
}
这感觉有点像 hack,不过我很想听听任何其他可能的解决方案。