2016-05-27 2 views
1

Ich habe ein Array von ChartArea area[] und eine Reihe von Series series[]Wie weisen wir einer ChartArea eine Serie zu?

Was ich tun müssen, ist eine andere ChartArea für jede Series zu verwenden.

Dies ist, was in der Regel getan wird:

Chart Chart0 = new Chart(); 
ChartArea ChartArea0 = new ChartArea("name"); 
Chart0.ChartAreas.Add(ChartArea0); 
Series Series0 = new Series(); 
Chart0.Series.Add(Series0); 
// link series to area here 
Series0.ChartArea = "name"; 

Aber in meinem Fall kann ich einen String Namen nicht für jeden haben. Es muss ein Array sein. Wie kann ich das umgehen?

+0

Warum muss es ein Array sein? Und eine Reihe von welchem ​​Typ? [ChartArea] (https://msdn.microsoft.com/en-us/library/system.web.ui.datavisualization.charting.chartarea (v = vs.110) .aspx) hat nur einen Konstruktor, der einen Parameter akzeptiert (vom Typ 'string'). Versuchen Sie, einen einzelnen 'string' Wert in einem' string' Array an den Konstruktor von 'ChartArea' zu übergeben? –

+0

Ich brauche ein Array, da die Anzahl der benötigten ChartAreas von einer variablen Anzahl von Parametern abhängt. Ich habe auch versucht: myString = i.ToString(); Bereich [i] = neuer ChartArea (myString); und chart.Series [i] .ChartArea = Convert.ToString (i); –

+0

Dann klingt es so, als ob Sie die Erstellung von 'ChartArea'-Objekten in eine Methode umwandeln möchten, die dieses' String'-Array von Namen übernimmt. Ich werde meine Antwort bearbeiten. –

Antwort

0

fragte ich ein paar Fragen in meinem Kommentar zu klären, aber wenn ich von meinen Annahmen der Situation gehen Sie zum Ausdruck gebracht, hier ist was ich tun würde:

var sourceStringArray = new string[] { "ChartArea1Name" }; 

Chart Chart0 = new Chart(); 
ChartArea ChartArea0 = new ChartArea(sourceStringArray[0]); 
Chart0.ChartAreas.Add(ChartArea0); 
Series Series0 = new Series(); 
Chart0.Series.Add(Series0); 
// link series to area here 
Series0.ChartArea = sourceStringArray[0]; 

Ich werde meine Antwort bearbeiten auf der Grundlage der Antworten auf mein Kommentar.

Edit:

Basierend auf Ihren Kommentar:

Ich brauche es eine Anordnung wie die Anzahl der ChartAreas sein Ich brauche eine variable Anzahl von Parametern abhängig ist

Sie möchten wahrscheinlich eine Methode erstellen, die Ihre ChartArea Objekte erstellt. Etwas wie:

private List<ChartArea> CreateChartAreas(string[] chartAreaNames) 
{ 
    var chartAreaInstances = new List<ChartArea>(); 

    foreach (var chartAreaName in chartAreaNames) 
    { 
     var tempChart = new Chart(); 
     var tempChartArea = new ChartArea(chartAreaName); 
     tempChart.ChartAreas.Add(tempChartArea); 
     var tempSeries = new Series(); 
     tempChart.Series.Add(tempSeries); 
     tempSeries.ChartArea = chartAreaName; 
    } 

    return chartAreaInstances; 
} 

Dann in dem Haupt-Code, so etwas wie:

var sourceStringArray = new string[] { "ChartArea1Name", "ChartArea2Name" }; 

var chartAreas = CreateChartAreas(sourceStringArray); 
foreach (var chartArea in chartAreas) 
{ 
    // Do something with your chart area instances. 
} 

Haftungsausschluss: Ich habe diesen Code nicht getestet, da ich weiß nicht, was Ihr spezifischer Anwendungsfall ist für Dies.

+0

Wenn dies Ihre Frage beantwortet hat, betrachten Sie sie bitte als akzeptierte Antwort. –

+0

Nun, das ist eine sehr gute Erklärung für die Antwort, aber ich muss auch wissen, dass ich keine String-Parameter habe. Die Anzahl der Diagrammbereiche, die ich brauche, basiert auf einem ganzzahligen Parameter. Muss ich die Stringnamen harcodieren? Oder gibt es einen anderen Weg? –

+0

@AditiM Je nach Anwendungsfall gibt es viele Möglichkeiten, dies zu erreichen. Sie könnten eine Variable haben, die den gewünschten "Basis-Chart-Namen" enthält (wie "ChartArea") und dann einfach den Integer in der 'foreach'-Schleife anhängen mit:' string baseName = "ChartArea"; baseName + = intParameterName.ToString(); ' –

Verwandte Themen