Ok już zrozumiałem i zrezygnowałem z dynamicznego dodawania kontrolek. Już pododawałem normalnie.
Jednak mam kolejny problem.
W projekcie posiadam osobny plik klasy o nazwie ParametrySieci.CS, który wygląda tak:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication2
{
public class ParametrySieci
{
public double napiecie;
//public double cmin;
//public double cmax;
//public double f;
// public double mz;
}
}
W MainForm(moja forma główna) tworzę nową formę FormIPN, na której użytkownik będzie pracował, w ten sposób:
public void nowyToolStripMenuItem_Click(object sender, EventArgs e)
{
TaskDialog td = new TaskDialog();
td.Caption = "Wybór sposobu uziemienia punktu neutralnego";
TaskDialogCommandLink cl1 = new TaskDialogCommandLink("cl1", "Izolowany punkt neutralny");
cl1.Click += (s, d) => choice = 1;
cl1.Click += (s, d) => td.Close(TaskDialogResult.Close); ;
td.Controls.Add(cl1);
TaskDialogCommandLink cl2 = new TaskDialogCommandLink("cl2", "Uziemienie przez rezystor pierwotny");
cl2.Click += (s, d) => choice = 2;
cl2.Click += (s, d) => td.Close(TaskDialogResult.Close); ;
td.Controls.Add(cl2);
TaskDialogCommandLink clc = new TaskDialogCommandLink("clc", "Anuluj");
clc.Click += (s, ev) => td.Close(TaskDialogResult.Close); ;
td.Controls.Add(clc);
td.InstructionText = "Wybierz sposób uziemienia punktu neutralnego transformatora SN, jaki chcesz przyjąć: ";
TaskDialogResult tdr = td.Show();
if (choice == 1)
{
//FormIPN Form2 = new FormIPN();
//Form2.MdiParent = this;
//Form2.Show();
if (MessageBox.Show("Wybrano izolowany punkt neutralny.", " ", MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
{
FormIPN Form2 = new FormIPN();
Form2.MdiParent = this;
Form2.Show();
nowyToolStripMenuItem.Enabled = false;
}
}
A z kolei w formie FormIPN otwieram okno dialogowe, z którego będę chciał pobrać zmienną:
namespace WindowsFormsApplication2
{
public partial class FormIPN : Form
{
ParametrySieci parametry = new ParametrySieci();
public FormIPN()
{
InitializeComponent();
label1.Text = parametry.napiecie.ToString();
}
public void Form2_Load(object sender, EventArgs e)
{
}
public void parametrysieci_Click(object sender, EventArgs e)
{
FormParametrySieci ps = new FormParametrySieci();
ps.ShowDialog();
}
}
}
Okno dialogowe wygląda tak:
namespace WindowsFormsApplication2
{
public partial class FormParametrySieci : Form
{
public FormParametrySieci()
{
InitializeComponent();
}
private void FormParametrySieci_Load(object sender, EventArgs e)
{
}
public void OK_Click(object sender, EventArgs e)
{
bool bVal1 = Double.TryParse(textBox1.Text, out napiecie);
if (bVal1)
{
MessageBox.Show("Wprowadzono", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
else
{
MessageBox.Show("Wprowadzone dane są niepoprawne lub ich brak.", "Uwaga!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void Anuluj_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Czy może ktoś mi podpowiedzieć, jak z okna dialogowego FormParametrySieci pobrać wartość z textBox1 i przypisać ją do zmiennej napięcie, zadeklarowanej w pliku klasy ParametrySieci.cs, oraz wyświetlić tę wartość w FormIPN. Chodzi mi o to, aby użytkownik mógł wpisać jakąś tam wartość, i ona została przypisana do zmiennej w klasie ParametrySieci i widoczna w FormIPN. Dla testu umieściłem tę linijkę:
label1.Text = parametry.napiecie.ToString();
Próbowałem na milion sposobów, tworzyłem obiekt klasy ParametrySieci w FormIPN, i obiekt klasy FormParametrySieci. Za każdym razem nie działa. Jeżeli w klasie przypiszę do zmiennej napiecie np =200, to w FormIPN wyświetla się 200 tak jak powinno, jednak nie mogę dojść do tego jak zmienić wartość tej zmiennej właśnie z poziomu okna dialogowego.. Błagam help :F