Programowanie w języku C#

Tworzenie okien

  • 2016-09-04 20:12
  • 1 komentarz
  • 19142 odsłony
  • 5/6

Wstęp


Zdarzają się sytuacje gdy jedno okno nam nie wystarcza. Co możemy wtedy zrobić? Można stworzyć, powiedzmy, klasę typu "okno" przechowującą zmienne o właściwości wszystkich komponentów na formie i procedurę która "przemienia" je na te komponenty przy użyciu danych zmiennych (Wierzcie albo nie, udało mi się coś takiego zrobić dawno temu). Takie rozwiązanie ma jednak "parę" sporych wad. Jest: Skomplikowane, nieczytelne, wolne (przy większej ilości komponentów) i... nie rozwiązuje innego problemu - co zrobić gdy chcemy by dwa okna były widoczne na raz.

Światło w tunelu


Jednak i wtedy nie jesteśmy na straconej pozycji. Środowisko visual C# pozwala nam stworzyć nowe okno w bardzo prosty sposób.

Stwórzmy najpierw nowy projekt o nazwie Windows (liczba mnoga od "window", jakby co...) . Następnie kliknij prawym przyciskiem myszy na napisie "Windows" z menu "solution explorer" i wybierz add -> new form, albo (jeśli twoja wersja visual C# nie ma takiej opcji) add -> new item -> windows form i nazwij ją Form2.cs. W ten sposób stworzyliśmy nową formę.

Po uruchomieniu programu pojawi się jednak nowy zgrzyt - drugiej formy nie widać! Dzieje się tak dlatego że domyślnie widoczna jest tylko pierwsza forma. Poradzimy sobie z tym dodając następujący kod:

Form2 form2 = new Form2();
form2.Show();


Jeśli chcemy wyłączyć okno wystarczy wpisać:

form2.Close();


Koniec


Więcej nie będę się rozpisywał, gdyż każdy chyba wie jak rozbudować taki projekt. Programowanie w drugiej formie jest dokładnie takie samo jak w pierwszej.

1 komentarz

_Kubek_ 2016-09-04 22:15

Chciałbym zdefiniować form1, aby ustawić mu na chwile właściwość Visable = false
Ale gdy wpisuje w programie:

Form1 form1 = new Form1();

i uruchamiam go wyskakuje mi błąd w Form2.desinger.cs wskazujący na:

this.ResumeLayout(false);
Mój cały program wygląda tak:

public partial class Form1 : Form
    {
        Form2 form2 = new Form2();
        Form1 form1 = new Form1();
        public Form1()
        {
            InitializeComponent();
        }
}

W form 2 nic nie ma.