c# - Using a variable to access a chart -
i have c# winforms application has 4 chart controls used graphically show analysis results.
i have code working each graph, in effort more efficient & re-use code i've defined code block to:
create required series, extracts info database & assigns results appropriate series add series chart customise charts appearance.all of above done dynamically info not exist @ design time.
the working code looking re-use is:
// add together both series chart. chartname.series.addrange(new series[] { series1, series2 }); // cast chart's diagram xydiagram type, access axes. xydiagram diagram = (xydiagram)chartname.diagram;
i'd alter chartname
object variable can pass each of charts in order re-use code. (note not work):-
var vchart = this.controls.find(chartname, true); // add together both series chart. vchart.series.addrange(new series[] { series1, series2 }); // cast chart's diagram xydiagram type, access axes. xydiagram diagram = (xydiagram)vchart.diagram;
any ideas, hints, tips, etc on how-to pass variable chartname appreciated.
full code:
void generate_chart() { // create 2 stacked bar series. series series1 = new series("data", viewtype.bar); series series2 = new series("ben", viewtype.line); seek { using (var cmd = new sqlitecommand(m_dbconnection)) (int = loopmin; < loopmax; i++) { // retrieve actual calculated values database cmd.commandtext = "select " + chart_sourceactualvalue + " " + chart_sourcetable + " value = " + + ""; chart_seriesa_value = convert.toint32(cmd.executescalar()); // retrieve expected values database cmd.commandtext = "select " + chart_benexpvalue + " " + chart_sourcetable + " value = " + + ""; chart_seriesb_value = convert.toint32(cmd.executescalar()); // add together dynamically created values series point chart series1.points.add(new seriespoint(i, chart_seriesa_value)); series2.points.add(new seriespoint(i, chart_seriesb_value)); } } grab (exception) { throw; } // add together both series chart. //this.controls.find(varchart, true) chartname.series.addrange(new series[] { series1, series2 }); // remove gridlines chart improve ui // cast chart's diagram xydiagram type, access axes. xydiagram diagram = (xydiagram)chartname.diagram; // customize appearance of axes' grid lines. diagram.axisx.gridlines.visible = false; } }
it sounds you're asking replace hardcoded chartname
variable can phone call routine 4 different times, each time different chart. i've taken code , replaced of global variable of chart command , settings , and made them parameters pass function:
void generate_chart(devexpress.xtracharts.chartcontrol chartctrl, string chart_sourceactualvalue, string chart_sourcetable, string chart_benexpvalue ) { // create 2 stacked bar series. series series1 = new series("data", viewtype.bar); series series2 = new series("ben", viewtype.line); seek { using (var cmd = new sqlitecommand(m_dbconnection)) (int = loopmin; < loopmax; i++) { // retrieve actual calculated values database cmd.commandtext = "select " + sourceactualvalue + " " + chart_sourcetable + " value = " + + ""; chart_seriesa_value = convert.toint32(cmd.executescalar()); // retrieve expected values database cmd.commandtext = "select " + chart_benexpvalue + " " + chart_sourcetable + " value = " + + ""; chart_seriesb_value = convert.toint32(cmd.executescalar()); // add together dynamically created values // series point chart series1.points.add(new seriespoint(i, chart_seriesa_value)); series2.points.add(new seriespoint(i, chart_seriesb_value)); } } grab (exception) { throw; } // add together both series chart. chartctrl.series.addrange(new series[] { series1, series2 }); // remove gridlines chart improve ui // cast chart's diagram xydiagram type, access axes. xydiagram diagram = (xydiagram)chartctrl.diagram; // customize appearance of axes' grid lines. diagram.axisx.gridlines.visible = false; } }
then, end calling method using original values arguments:
void generate_chart(chartname, chart_sourceactualvalue, chart_sourcetable, chart_benexpvalue); // phone call 3 other times passing in different specifics chart. e.g. void generate_chart(someotherchartname, someotherchart_sourceactualvalue, someohterchart_sourcetable, someotherchart_benexpvalue); .....
c# winforms devexpress
No comments:
Post a Comment