vs2017关于chart的问题

qq_40433468 2019-07-22 09:51:25


当数据增长到超过Y轴最大值时,Y轴不会动态更新,重新运行程序才能正常显示。
请问一下如何解决这种情况?
...全文
303 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40433468 2019-07-22
  • 打赏
  • 举报
回复
说简洁点吧: 初始值是10,定时器会刷新, 我去数据库更新为100,柱状图会变,但是Y轴的最大值不变
qq_40433468 2019-07-22
  • 打赏
  • 举报
回复
引用 2 楼 北京.NET-6年 的回复:
chart 一版都有一个Max...值,属性里因改有,数据变化后,设置一下就好了。
这个知道,我考虑过,但是数据多的时候,很繁琐,需要判断柱状图里哪一条的值最大,才能去定最大值
qq_40433468 2019-07-22
  • 打赏
  • 举报
回复
引用 1 楼 ManBOyyy 的回复:
[quote=引用 楼主 qq_40433468 的回复:] 当数据增长到超过Y轴最大值时,Y轴不会动态更新,重新运行程序才能正常显示。 请问一下如何解决这种情况?
你代碼呢[/quote] 代码很简单的,就添加柱状图数据,timer就不贴出来了 private void Chart_Load(object sender, EventArgs e) { string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'"; DataSet ds = Class1.chaxun2(sqql); chart1.Series.Clear();//清除默认的图例 series1.Points.Add(Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString())); }
北京.NET 2019-07-22
  • 打赏
  • 举报
回复
chart 一版都有一个Max...值,属性里因改有,数据变化后,设置一下就好了。
ManBOyyy 2019-07-22
  • 打赏
  • 举报
回复
引用 楼主 qq_40433468 的回复:


当数据增长到超过Y轴最大值时,Y轴不会动态更新,重新运行程序才能正常显示。
请问一下如何解决这种情况?

你代碼呢
ManBOyyy 2019-07-22
  • 打赏
  • 举报
回复
引用 15 楼 qq_40433468 的回复:
[quote=引用 14 楼 ManBOyyy 的回复:]
[quote=引用 13 楼 qq_40433468 的回复:]
我都說了這麼清楚,你還是不懂,,你那個查詢數據庫放在time事件就行了,還以為你一點就開竅了,沒想到一竅不通呀

string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'";
ds = Class1.chaxun2(sqql);
chart1.Series.Clear();//清除默认的图例
bindingSeries()
放在定時器

还是不通我们重新开始吧,在这个的基础上改,不要在X轴新增
private void timer1_Tick(object sender, EventArgs e)
{
string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'";
DataSet ds = Class1.chaxun2(sqql);
chart1.Series.Clear();//清除默认的图例
Series series1 = new Series();
series1.Points.Add(Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString()));
chart1.Series.Add(series1);//显示数据
series1.IsValueShownAsLabel = true;//是否显示值
}
我全放在time吧,这也是全部代码了
结果跟我5楼放的图一样,改为100之后,直接显示不了了。[/quote]
在這行打斷點,調試,運行,你看看定時器有木有啟動
string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'";[/quote]

找到一个办法了,每次都清空一次数据就好了
chart1.Series[0].Points.Clear();
再添加数据
你好有耐心,谢谢![/quote]
一般都是重新綁定一下datatable,然後再綁定chart的xy軸
qq_40433468 2019-07-22
  • 打赏
  • 举报
回复
引用 14 楼 ManBOyyy 的回复:
[quote=引用 13 楼 qq_40433468 的回复:] 我都說了這麼清楚,你還是不懂,,你那個查詢數據庫放在time事件就行了,還以為你一點就開竅了,沒想到一竅不通呀 string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'"; ds = Class1.chaxun2(sqql); chart1.Series.Clear();//清除默认的图例 bindingSeries() 放在定時器
还是不通我们重新开始吧,在这个的基础上改,不要在X轴新增 private void timer1_Tick(object sender, EventArgs e) { string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'"; DataSet ds = Class1.chaxun2(sqql); chart1.Series.Clear();//清除默认的图例 Series series1 = new Series(); series1.Points.Add(Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString())); chart1.Series.Add(series1);//显示数据 series1.IsValueShownAsLabel = true;//是否显示值 } 我全放在time吧,这也是全部代码了 结果跟我5楼放的图一样,改为100之后,直接显示不了了。[/quote] 在這行打斷點,調試,運行,你看看定時器有木有啟動 string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'";[/quote] 找到一个办法了,每次都清空一次数据就好了 chart1.Series[0].Points.Clear(); 再添加数据 你好有耐心,谢谢!
ManBOyyy 2019-07-22
  • 打赏
  • 举报
回复
引用 13 楼 qq_40433468 的回复:
我都說了這麼清楚,你還是不懂,,你那個查詢數據庫放在time事件就行了,還以為你一點就開竅了,沒想到一竅不通呀

string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'";
ds = Class1.chaxun2(sqql);
chart1.Series.Clear();//清除默认的图例
bindingSeries()
放在定時器

还是不通我们重新开始吧,在这个的基础上改,不要在X轴新增
private void timer1_Tick(object sender, EventArgs e)
{
string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'";
DataSet ds = Class1.chaxun2(sqql);
chart1.Series.Clear();//清除默认的图例
Series series1 = new Series();
series1.Points.Add(Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString()));
chart1.Series.Add(series1);//显示数据
series1.IsValueShownAsLabel = true;//是否显示值
}
我全放在time吧,这也是全部代码了
结果跟我5楼放的图一样,改为100之后,直接显示不了了。[/quote]
在這行打斷點,調試,運行,你看看定時器有木有啟動
string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'";
qq_40433468 2019-07-22
  • 打赏
  • 举报
回复
我都說了這麼清楚,你還是不懂,,你那個查詢數據庫放在time事件就行了,還以為你一點就開竅了,沒想到一竅不通呀 string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'"; ds = Class1.chaxun2(sqql); chart1.Series.Clear();//清除默认的图例 bindingSeries() 放在定時器 [/quote] 还是不通我们重新开始吧,在这个的基础上改,不要在X轴新增 private void timer1_Tick(object sender, EventArgs e) { string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'"; DataSet ds = Class1.chaxun2(sqql); chart1.Series.Clear();//清除默认的图例 Series series1 = new Series(); series1.Points.Add(Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString())); chart1.Series.Add(series1);//显示数据 series1.IsValueShownAsLabel = true;//是否显示值 } 我全放在time吧,这也是全部代码了 结果跟我5楼放的图一样,改为100之后,直接显示不了了。
ManBOyyy 2019-07-22
  • 打赏
  • 举报
回复
還是不懂參考這個
https://social.msdn.microsoft.com/Forums/zh-CN/bacb7a31-15ab-49bf-9092-24bd8abcd755/c-1997720010chart25511202142635432447199683621521160?forum=visualcshartzhchs
ManBOyyy 2019-07-22
  • 打赏
  • 举报
回复
引用 10 楼 qq_40433468 的回复:
[quote=引用 9 楼 ManBOyyy 的回复:]
[quote=引用 8 楼 qq_40433468 的回复:]
[quote=引用 7 楼 ManBOyyy 的回复:]
你都寫錯地方了,綁定xy軸,在另外一個方法的,你寫在load事件幹嘛呢



load还是会调用这个方法啊,不是一样的吗?
你上面的代码是增加新的柱状图[/quote]
那你告訴我,用我的辦法不可以自動改變Y軸嗎???
valuey = valuey + 5;你可以改大一點看看有木有反應[/quote]


有啊,只要有新增都会改变Y轴,但是这种情况本来就会刷新Y轴的最大值,不是代码的问题。[/quote]
我都說了這麼清楚,你還是不懂,,你那個查詢數據庫放在time事件就行了,還以為你一點就開竅了,沒想到一竅不通呀

string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'";
ds = Class1.chaxun2(sqql);
chart1.Series.Clear();//清除默认的图例
bindingSeries()
放在定時器

qq_40433468 2019-07-22
  • 打赏
  • 举报
回复
引用 9 楼 ManBOyyy 的回复:
[quote=引用 8 楼 qq_40433468 的回复:] [quote=引用 7 楼 ManBOyyy 的回复:] 你都寫錯地方了,綁定xy軸,在另外一個方法的,你寫在load事件幹嘛呢
load还是会调用这个方法啊,不是一样的吗? 你上面的代码是增加新的柱状图[/quote] 那你告訴我,用我的辦法不可以自動改變Y軸嗎??? valuey = valuey + 5;你可以改大一點看看有木有反應[/quote] 有啊,只要有新增都会改变Y轴,但是这种情况本来就会刷新Y轴的最大值,不是代码的问题。
ManBOyyy 2019-07-22
  • 打赏
  • 举报
回复
引用 8 楼 qq_40433468 的回复:
[quote=引用 7 楼 ManBOyyy 的回复:]
你都寫錯地方了,綁定xy軸,在另外一個方法的,你寫在load事件幹嘛呢



load还是会调用这个方法啊,不是一样的吗?
你上面的代码是增加新的柱状图[/quote]
那你告訴我,用我的辦法不可以自動改變Y軸嗎???
valuey = valuey + 5;你可以改大一點看看有木有反應
qq_40433468 2019-07-22
  • 打赏
  • 举报
回复
引用 7 楼 ManBOyyy 的回复:
你都寫錯地方了,綁定xy軸,在另外一個方法的,你寫在load事件幹嘛呢
load还是会调用这个方法啊,不是一样的吗? 你上面的代码是增加新的柱状图
ManBOyyy 2019-07-22
  • 打赏
  • 举报
回复
你都寫錯地方了,綁定xy軸,在另外一個方法的,你寫在load事件幹嘛呢
ManBOyyy 2019-07-22
  • 打赏
  • 举报
回复
DataSet ds ;
int valuey=0;
private void Chart_Load(object sender, EventArgs e)
{
valuey=20;
string sqql = "SELECT name FROM [test].[dbo].[testzzs] where id='2'";
ds = Class1.chaxun2(sqql);
chart1.Series.Clear();//清除默认的图例
bindingSeries()
}

private void bindingSeries()
{
for (int i = 0; i < 1; i++)
{
// int valuey = rd.Next(20, 100);
// valuey = 21;
DataPoint point = new DataPoint((i + 1), valuey);

series1.Points.Add(point);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
valuey = valuey + 5;
bindingSeries();
}

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧