Po pierwsze co ma wspólnego: Form2 f2 = new Form2(cal);
z: public ObliczGranice(double wspa,double zm_x,double wspb,double przec,double wartgr,double dziedz,calosc c)
?
To wygląda na cześć przekazania jakiegoś parametru do zupełnie innej formy,tylko że nie pokazałeś ani deklaracji tej zmiennej cal
ani jej inicjalizacji.
Okej już wszystko wrzucam tak, jak mam:
To jest event w głównej formie:
Kopiuj
private void oblicz_granice_funkcji_liniowej_Click(object sender, EventArgs e)
{
panel_funkcji_liniowej.Enabled = false;
var cal = new calosc();
var ob = new ObliczGranice(wspolczynnik_a_funkcji_liniowej, zmienna_x_funkcji_liniowej, wspolczynnik_b_funkcji_liniowej, przeciwdziedzina_funkcji_liniowej, wartosc_granicy_funkcji_liniowej, dziedzina_funkcji_liniowej,cal);
wspolczynnik_a_funkcji_liniowej = ObliczGranice.wspol_a;
dziedzina_funkcji_liniowej = ObliczGranice.dziedzina;
wspolczynnik_b_funkcji_liniowej = ObliczGranice.wspol_b;
zmienna_x_funkcji_liniowej = ObliczGranice.zmienna_x;
ob.Show();
ob.FormClosed += (o, args) => panel_funkcji_liniowej.Enabled = true;
}
A to jest kod drugiej formy. Sory za dziwaczne nazwy, ale robiłem na szybko:
Kopiuj
public partial class ObliczGranice : Form
{
public static double wspol_a,zmienna_x,wspol_b,przeciwd,wartosc_gr,dziedzina;
private calosc cal;
public ObliczGranice(double wspa,double zm_x,double wspb,double przec,double wartgr,double dziedz, calosc c)
{
InitializeComponent();
wspol_a = wspa;
zmienna_x = zm_x;
wspol_b = wspb;
przeciwd = przec;
wartosc_gr = wartgr;
dziedzina = dziedz;
this.cal = c;
this.SetAutoSizeMode(System.Windows.Forms.AutoSizeMode.GrowAndShrink);
}
private void granica_w_punkcie_wybor_btn_Click(object sender, EventArgs e)
{
cal.DrawCh();
cal.Show();
this.Close();
}
A to jest tresc DrawCh():
Kopiuj
public void DrawCh()
{
this.wykres_funkcja_liniowa.Series["wykres"].Points.Clear();
this.wykres_funkcja_liniowa.Series["granica"].Points.Clear();
for (ObliczGranice.dziedzina = ObliczGranice.zmienna_x - 20; ObliczGranice.dziedzina < ObliczGranice.zmienna_x + 20; ObliczGranice.dziedzina++)
{
ObliczGranice.przeciwd = ObliczGranice.wspol_a * ObliczGranice.dziedzina + ObliczGranice.wspol_b;
this.wykres_funkcja_liniowa.Series["wykres"].Points.AddXY(ObliczGranice.dziedzina, ObliczGranice.przeciwd);
}
ObliczGranice.wartosc_gr = ObliczGranice.wspol_a * ObliczGranice.zmienna_x + ObliczGranice.wspol_b;
this.wykres_funkcja_liniowa.Series["granica"].Points.AddXY(ObliczGranice.zmienna_x, ObliczGranice.wartosc_gr);
this.wykres_funkcja_liniowa.Series["granica"].Points[0].Color = Color.Red;
this.wykres_funkcja_liniowa.Series["granica"].Points[0].MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
}