只是一个快速的。我有一个图形,可以显示9个不同的序列,数据是通过用户的文本框输入的,并填充了这些序列。
该图链接到一个checkedlistbox,并且列表框中被选中的项目在图表上启用了它们各自的系列。一次只能启用2个系列,使用下面的代码可以正常工作:
private void chListBoxChartSeries_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked && chListBoxChartSeries.CheckedItems.Count >= 2)
{
e.NewValue = CheckState.Unchecked;
}
}
public void saveChartSeries()
{
//placeholder variable to relate between checklist item and chart series
string seriesName;
for (int index = 0; index < chListBoxChartSeries.Items.Count; ++index)
{
seriesName = chListBoxChartSeries.Items[index].ToString();
if (chListBoxChartSeries.CheckedItems.Contains(chListBoxChartSeries.Items[index]))
{
main.chartVitals.Series[seriesName].Enabled = true;
}
else
{
main.chartVitals.Series[seriesName].Enabled = false;
}
}
}
接下来,我确实想做一件事,我希望将每个系列都设置为每种颜色(例如,第一系列为红色,第二系列为蓝色)。我正在努力寻找一种有效的方法来完成此操作,但我想它涉及将两个索引中的第一个设置为一种颜色(红色),而第二个设置为另一种颜色(蓝色)。我想我可以使用saveChartSeries()函数中现有的for循环来完成此操作,如下所示:
public void saveChartSeries()
{
//placeholder variable to relate between checklist item and chart series
string seriesName;
for (int index = 0; index < chListBoxChartSeries.Items.Count; ++index)
{
seriesName = chListBoxChartSeries.Items[index].ToString();
if (chListBoxChartSeries.CheckedItems.Contains(chListBoxChartSeries.Items[index]))
{
main.chartVitals.Series[seriesName].Enabled = true;
if (main.chartVitals.Series[seriesName].Enabled == true)
{
//set series color to Color.Red
//if there is already a red series, set to Color.Blue
}
}
else
{
main.chartVitals.Series[seriesName].Enabled = false;
}
}
}
如果有人可以提供进一步的建议,或者如果我过于繁琐,并且有一个更简单的方法,那么这就是我到目前为止所能做的事情,我真的很感谢有人指出这一点!
如果我对您的理解正确,则希望使用固定列表中的颜色为每个可见系列着色。
每当您启用或禁用上一个系列时,都会涉及更改后续系列的颜色,对吗?
这是一个可以做到的功能:
void colorSeries(Chart chart)
{
List<Color> seriescolors = new List<Color>
{ Color.Khaki, Color.Brown, Color.CornflowerBlue,
Color.DarkCyan, Color.ForestGreen, Color.Gold, Color.HotPink, Color.Indigo};
int co = 0;
foreach (Series s in chart.Series)
if (s.Enabled) s.Color = seriescolors[co++];
}
每次启用或禁用系列时都将调用它。
您还写道:如果我过于复杂,并且认为可以使用现有的for循环进行此操作。唔。在我看来,您既要使其复杂化,又要设定完全错误的优先级。
不要试图将某些东西放入“现有循环”中;相反,要保持简单,并在处理完用户操作之后调用一个函数来处理显示颜色。
尝试“分离关注点”,并始终致力于创建小的自给自足的例程!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句