Odpověděl jsi si sám - čistší je předat pole landmarks vytvořenému formuláři a to takto:
GraphForm graphForm = new GraphForm(landmarks);
Pak musíš upravit konstruktor GraphForm a přidat vlastnost pro uchování předané hodnoty:
Landmarks landmarks;
public GraphForm(Landmarks predaneLandmarks)
{
InitializeComponent();
this.landmarks = predaneLandmarks;
}
Není také vhodné, aby prvý formulář řídil, co se vykresluje na druhém - jen ať si to odmaká sám ten druhý. Důvod - pokud např. přidáš třetí formulář nebo kód, který také nějak sestaví seznam landmarks (např. načtením ze souboru), musel bys vykreslení psát
znovu v kódu třetího formuláře. Takže kód prvého formuláře by mohl být:
private void graphButton_Click(object sender, EventArgs e)
{
GraphForm graphForm = new GraphForm(landmarks);
graphForm.Show();
}
A kód druhého:
Landmarks landmarks;
public GraphForm(Landmarks predaneLandmarks)
{
InitializeComponent();
this.landmarks = predaneLandmarks;
}
public vykresli()
{
int i = 0; //graf pro uzel i
for (int k = 0; k < 14; k++)
{
graphForm.delayDistanceChart.Series["Series1"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point;
graphForm.delayDistanceChart.Series["Series1"].Points.AddXY(landmarks[i].correlationTable[k].Distance, landmarks[i].correlationTable[k].Delay);
}
}
Cest je ale více - pokud chceš pole landmarks použít i na dalších místech, můžeš jej obalit např. do statické třídy a problémy s předáváním zmizí - to už musíš popřemýšlet sám podle účelu aplikace...