Dodanie wykorzystania innej formy do formy głównej

0

Witam,
Zaczynam swoją przygodę w C#, wcześniej programowałem jedynie w Delphi. Na początku chciałbym móc pracować na dwóch formatkach i powiedzmy przyciskiem z jednej formatki zmieniać tekst w "Label'u" na formatce drugiej. W Delphi wystarczyło "Dodać moduł do sekcji Uses" z menu np. Lazarusa, bądź poprzez kod:

implementation

uses Unit2 

a następnie pod kliknięciem przycisku dodać krótki kawałek kodu:

Form2.Label1.Caption:="Tekst";

Dzięki dodaniu modułu, można było korzystać z każdego komponentu drugiej formatki. Czy w C# jest również możliwość takiego wykorzystania innej formatki?

Niestety taki kod nie działa:

void Button1Click(object sender, EventArgs e)
		{
			Form1 f2= new Form1();
			Form1.Label1.Text="test";
			f2.Show();
		} 

Pozdrawiam
Radek

1

W Form1 zrób metodę:

public void UstawTekstLabela(string tekst)
{
   this.label123.Text = tekst;
}

W Form2 zrób pole:

private Form1 form1;

Oraz konstruktor:

public Form2(Form1 form1)
{
    InitializeComponents();
    this.form1 = form1;
}

I funkcję dla przycisku:

void Button1Click(object sender, EventArgs e)
{
    this.form1.UstawTekstLabela("cośtam");
}

Teraz z Form1 możesz możesz utworzyć Form2:

Form2 f2 = new Form2(this);
f2.Show();

I teraz kliknięcie w button na Form2, zmieni tekst na Form1. Magia!

0

O matko, czyli jak będę chciał skorzystać z innych komponentów między formatkami, powiedzmy, ComboBox, ListBox, CheckBox, to będę musiał wszystkie te kody powielać i modyfikować? W każdym razie dziękuję za uświadomienie czego mogę się spodziewać po tym języku.

0

@radzix, a jak byś wolał?
Bo to, co opisałeś w pierwszym formie wygląda tak, jakby w Delphi wszystko było statyczne, i można mieć tylko jedną formatkę danego typu.

0

Można też zmieniać .Modifiers wybranych elementów na 'Public' - wtedy nie trzeba pisać osobnych metod do ich obsługi... Przypomina to wtedy Delphi.

0
Marcin.Miga napisał(a):

Przypomina to wtedy Delphi.

A poza tym tworzy bałagan i utrudnia zmiany w przyszłości.

0

Można też zmieniać .Modifiers wybranych elementów na 'Public' - wtedy nie trzeba pisać osobnych metod do ich obsługi..
IMHO zamiast metody (co mi znowu przypomina Javę…) najlepiej byłoby zrobić to przez eventa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1