Witam wszystkich użytkowników.
Przechodzę aktualnie chwilę odmóżdżenia ponieważ mój projekt zaczyna dawać mi się we znaki ale to nie znaczy, że wolno mi marnotrawić mój czas.
Przejrzałem wątki w tym dziale i nie zauważyłem jednej rzeczy - która może być czasem przydatna. Jak zrobić własne okno dialogowe, które po wyświetleniu zatrzyma wykonywanie się głównego programu i będzie oczekiwać na naszą odpowiedź? Na pewno większość już się z tym spotkała ponieważ tak właśnie działa standardowy
MessageBox. Do czego to można wykorzystać? Okno tworzenia nowego projektu, w którym wpisujemy dane projektu jak Nazwa, numer etc...
Zaczynamy!
Stwórzcie nowy projekt Windows Forms i dodajcie obiekt MenuStrip do głównej formatki:
Po dodaniu MenuStrip, dodajmy jeszcze parę innych kontrolek, jakichś przycisków, czegokolwiek i ustawcie ich właściwość Enabled na false.
Dodajmy do naszego górnego menu
MenuStrip obiekt (ToolStripMenuItem) o nazwie Nowy projekt.
Po uruchomieniu naszego programu, widać, że przyciski są zablokowane - tak też ma pozostać do czasu, aż
utworzymy sobie nowy projekt w naszym programie!
Okej, czas zacząć tworzyć nasze nowe okno dialogowe. W eksploratorze solucji SolutionExplorer, klikamy prawym przyciskiem myszy i wycieramy
"Add" --> "Windows Form..."
Dodajmy również dwa
TextBox'y i 2
Button'y. Zatytułujmy przyciski kolejno "Stwórz" oraz "Anuluj" a w
TextBox'ach będziemy wpisywać dane nowego projektu. Niech to wygląda mniej więcej w ten sposób:
Przechodzimy teraz do kodu klasy naszego okna dialogowego. Obsłużymy tutaj tylko dwa zdarzenia - naciśnięcia przycisków.
Będziemy musieli stworzyć sobie dwie właściwości typu string, które przechowają nam dane naszego projektu.
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Żeby ułatwić sobie zadanie, możemy zablokować możliwość zamknięcia okna przez standardowy przycisk "krzyżyk" w prawym górnym rogu ekranu.
Sprawa jest prosta - wystarczy odpowiednio obsłużyć zdarzenie FromClosing(). Dodajmy sobie zmienną
bool która anuluje
zamykanie okna, jeżeli jej wartość nie jest równa
true.
Tak teraz wygląda cały kod naszego okna dialogowego.
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Lecimy dalej. Zajmijmy się najpierw zdarzeniem anulowania tworzenia nowego projektu.
W przypadku anulowania, okno powinno się jak najbardziej zamknąć, przy czym powinno również zwrócić jakąś wartość dialog result - ale jak?
Nic prostszego. Wystarczą nam do tego aż TRZY linijki kodu w naszym zdarzeniu!
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Cały kod okna dialogowego.
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Teraz czas na drugi przycisk. Dla smaczku dodamy tutaj sprawdzanie, czy aby użytkownik nie chce nas wykiwać i stworzyć projektu bez nazwy :O
Do dzieła!
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Końcowy kod naszego okna dialogowego:
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Czas wrócić do głównego okna, zostało już naprawdę niewiele roboty^^
Obsłużmy więc zdarzenie naciśnięcia z górnego menu "Nowy projekt"
bo w zasadzie to wtedy musi nam się pojawić okno dialogowe.
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jeżeli wiemy, że DialogResult jest taki jaki chcieliśmy, możemy śmiało pobrać sobie wartości pól typu string okna dialogowego poprzez jego właściwości, do naszego głównego okna. W tym celu trzeba by było stworzyć sobie jakieś zmienne, żeby to przechować. Dobrze wiecie o co chodzi, więc nie muszę o tym pisać.
Dla efektu, obsłużmy jeszcze nasze dwa przyciski, ja dałem dwa, nie wiem jak wy.
Ale chwila, nasze przyciski są zablokowane - prawie bym zapomniał
dodajemy po naszym warunku jeszcze
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i to tyle - zróbcie sobie z nimi co chcecie. Teraz macie stworzony nowy projekt, z danymi wpisanymi przez użytkownika które trzeba wpisać aby zacząć pracę. Nie ładnie tak ludzi do czegoś zmuszać no ale cóż, czasami trzeba ale to tylko i wyłącznie dla ich dobra! ^^
U mnie kod głównego okna wygląda teraz tak:
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Screeny kolejnych kroków działania programu.
1:
2: Jak widać, główne okno jest nieaktywne a okno dialogowe nie pozwoli nam z nim nic zrobić do czasu aż nie wybierzemy jednej z opcji - "Stwórz" lub "Anuluj".
3: Jak widać, wszystko przebiegło pomyślnie i moje przyciski aktywowały się.
4: Po naciśnięciu przycisku "Wgraj obrazek".
5: Po naciśnięciu "Dodaj podpis".
To by było na tyle. Był to mój pierwszy poradnik w życiu. Może się komuś przyda, może nie.
W związku z tym, że to moje pierwsze takie wypociny - Jakieś obiekcje? Coś jest nie jasne?
Będę wdzięczny za szczere wypowiedzi! Enjoy!
Pozdrawiam, Maciek!