You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForms货币转换程序Chart控件Y轴最大值不更新问题求助

解决WinForms Chart控件Y轴峰值不更新的问题

问题原因

你每次点击按钮时都会清空Series并添加新数据,但Chart的Y轴在首次生成数据后被固定为初始峰值,没有自动重新计算新的最大值。你尝试修改chart1.Height的操作完全无关,且代码中askPriceValint = chart1.ChartAreas[0].AxisY.Maximum;只是读取当前最大值,没有对轴设置做任何有效修改。

解决方案

要让Y轴自动根据新数据更新峰值,只需确保ChartArea的Y轴启用自动缩放,或在添加数据后强制重新计算轴范围。

方法1:启用Y轴自动缩放(推荐)

在清空Series后、添加新数据前,添加以下代码:

// 开启Y轴自动缩放,让Chart根据数据自动调整峰值
chart1.ChartAreas[0].AxisY.AutoScale = true;
// 清除手动设置的固定最大值(如果之前有设置)
chart1.ChartAreas[0].AxisY.Maximum = double.NaN;

方法2:手动计算并设置Y轴最大值

如果需要更精确的范围控制,可以手动计算当前数据的最大值并设置给Y轴:

double maxValue = Math.Max(bidPriceVal, askPriceVal);
// 给最大值留10%的余量,避免数据贴到Y轴顶部
chart1.ChartAreas[0].AxisY.Maximum = maxValue * 1.1;

修改后的关键代码片段

替换你原有的Chart操作代码为:

chart1.Series.Clear();
// 启用Y轴自动缩放
chart1.ChartAreas[0].AxisY.AutoScale = true;
chart1.ChartAreas[0].AxisY.Maximum = double.NaN;

chart1.Series.Add($"{a} {neyden} / {neye}");
double bidPriceVal = Convert.ToDouble(bidPrice) * a;
chart1.Series[$"{a} {neyden} / {neye}"].Points.AddXY("Teklif Fiyatı", bidPriceVal);
double askPriceVal = Convert.ToDouble(askPrice) * a;
chart1.Series[$"{a} {neyden} / {neye}"].Points.AddXY("Alış Fiyatı", askPriceVal);

额外提示

  • 移除代码中无效的double askPriceValint = Convert.ToInt32(askPriceVal);和askPriceValint = chart1.ChartAreas[0].AxisY.Maximum;两行,它们对解决问题没有帮助。
  • 如果设计时手动设置过Y轴的Maximum值,必须先将其设为NaN,自动缩放才能生效。

内容的提问来源于stack exchange,提问作者Samet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:35:01