关于Chart控件绘制的曲线进行切换的问题

Il Mare 2019-05-16 03:27:31
我用Chart控件绘制曲线,然后想在动态显示时通过comboBox来切换曲线,但是没成功。在动态运行时用comboBox切换之后,两条曲线都显示出来了,但是我只想显示一条啊 如图:原本只有红色的线,我切换到CH_01之后,两条都出来了,但是我的理想状态时只有蓝的。。


下边是部分源代码;那种选择后在点击绘图可以实现,但是我想在动态显示过程中切换,还请大神指点

myda.Fill(myds, "CH_00,CH_01");
DataView d1 = new DataView(myds.Tables[0]);

if (comboBox2.SelectedItem.ToString() == "CH_00")
{
series1.Points.DataBindXY(d1, "采样时间", d1, "CH_00");
//chart.Series.Clear();
}
if (comboBox2.SelectedItem.ToString() == "CH_01")
{
series2.Points.DataBindXY(d1, "采样时间", d1, "CH_01");
}
...全文
237 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Il Mare 2019-05-19
  • 打赏
  • 举报
回复
引用 9 楼 NCScan 的回复:
选择的时候 先清空原来的

谢谢回复,我之前是清空了所有,看了上边回答解决了
NCScan 2019-05-19
  • 打赏
  • 举报
回复
选择的时候 先清空原来的
ManBOyyy 2019-05-17
  • 打赏
  • 举报
回复
Control[] controls1 = this.panel1.Controls.Find("chart1", true);
System.Windows.Forms.DataVisualization.Charting.Chart ch1 = (System.Windows.Forms.DataVisualization.Charting.Chart)controls[0];
if (ch1.Series.Count > 1)
{
//MessageBox.Show(this, "去掉一条线!", "信息提示");
int i = ch1.Series.Count - 1;
while (i > 1)
{
if (ch1.Series[i].Points.Count > 0)
{
break;
}
i -= 1;
}

ch1.Series[i].Points.Clear();
//this.toolStripStatusLabel2.Text = "减少对比曲线完成!";
}
else
{
MessageBox.Show(this, "绘图区域至少要有一条线!", "信息提示");

}
秋的红果实 2019-05-17
  • 打赏
  • 举报
回复
先清除,再绑定新数据;而且是清除Points chart.Series.Points.Clear(); series1.Points.DataBindXY(d1, "采样时间", d1, "CH_00"); 记得好像是这样
Il Mare 2019-05-17
  • 打赏
  • 举报
回复
引用 5 楼 ManBOyyy 的回复:
Control[] controls1 = this.panel1.Controls.Find("chart1", true);
System.Windows.Forms.DataVisualization.Charting.Chart ch1 = (System.Windows.Forms.DataVisualization.Charting.Chart)controls[0];
if (ch1.Series.Count > 1)
{
//MessageBox.Show(this, "去掉一条线!", "信息提示");
int i = ch1.Series.Count - 1;
while (i > 1)
{
if (ch1.Series[i].Points.Count > 0)
{
break;
}
i -= 1;
}

ch1.Series[i].Points.Clear();
//this.toolStripStatusLabel2.Text = "减少对比曲线完成!";
}
else
{
MessageBox.Show(this, "绘图区域至少要有一条线!", "信息提示");

}

感谢回复, ch1.Series[i].Points.Clear();用您的这句解决了!
Il Mare 2019-05-17
  • 打赏
  • 举报
回复
引用 4 楼 秋的红果实 的回复:
先清除,再绑定新数据;而且是清除Points
chart.Series.Points.Clear();
series1.Points.DataBindXY(d1, "采样时间", d1, "CH_00");

记得好像是这样

谢谢,是这样的解决了,应该把点清除。
Il Mare 2019-05-17
  • 打赏
  • 举报
回复
引用 3 楼 neu_ZZM 的回复:
[quote=引用 2 楼 Il Mare 的回复:]
[quote=引用 1 楼 neu_ZZM 的回复:]
是不是在切换的时候要加一个更新,把原来的删掉,我看你把clear那句话打上注释了

那一句直接把所有的都消除了。。。。[/quote]
所以是不是应该先清除,再画呢,比如把清除和它上一句话掉换个位置,然后在下面这个判断里也加个清除[/quote]chart.Series.Points.Clear();
应该这样就对了,我解决了,谢谢
neu_ZZM 2019-05-16
  • 打赏
  • 举报
回复
引用 2 楼 Il Mare 的回复:
[quote=引用 1 楼 neu_ZZM 的回复:]
是不是在切换的时候要加一个更新,把原来的删掉,我看你把clear那句话打上注释了

那一句直接把所有的都消除了。。。。[/quote]
所以是不是应该先清除,再画呢,比如把清除和它上一句话掉换个位置,然后在下面这个判断里也加个清除
Il Mare 2019-05-16
  • 打赏
  • 举报
回复
引用 1 楼 neu_ZZM 的回复:
是不是在切换的时候要加一个更新,把原来的删掉,我看你把clear那句话打上注释了

那一句直接把所有的都消除了。。。。
neu_ZZM 2019-05-16
  • 打赏
  • 举报
回复
是不是在切换的时候要加一个更新,把原来的删掉,我看你把clear那句话打上注释了

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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