Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 26 lis 2024, o 17:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 25 cze 2015, o 18:58 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

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:
Obrazek

Po dodaniu MenuStrip, dodajmy jeszcze parę innych kontrolek, jakichś przycisków, czegokolwiek i ustawcie ich właściwość Enabled na false.
Obrazek

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!
Obrazek

Okej, czas zacząć tworzyć nasze nowe okno dialogowe. W eksploratorze solucji SolutionExplorer, klikamy prawym przyciskiem myszy i wycieramy
"Add" --> "Windows Form..."
Obrazek

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:
Obrazek

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.

Składnia: [ Pobierz ] [ Ukryj ]
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.
Składnia: [ Pobierz ] [ Ukryj ]
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!

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Cały kod okna dialogowego.
Składnia: [ Pobierz ] [ Ukryj ]
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!

Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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.

Składnia: [ Pobierz ] [ Ukryj ]
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ł :D

dodajemy po naszym warunku jeszcze

Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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:
Obrazek

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".
Obrazek

3: Jak widać, wszystko przebiegło pomyślnie i moje przyciski aktywowały się.
Obrazek

4: Po naciśnięciu przycisku "Wgraj obrazek".
Obrazek

5: Po naciśnięciu "Dodaj podpis".
Obrazek

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!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 cze 2015, o 19:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Hey Maciek!

Bardzo fajny poradniczek. Moglbys moze tez o WPF sprobowac - bo dzis odchodzi sie od Windows Forms

Pozdrawiam
Raf

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 cze 2015, o 19:41 
Offline
Użytkownik

Dołączył(a): 08 maja 2014
Posty: 61
Pomógł: 1

Chyba mnie namówiłeś XD
Nie widziałem też na w tym dziale zbyt dużo o klasie Graphics. Myślisz że warto poruszyć ten temat ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 cze 2015, o 20:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Wiesz ciezko powiedziec - bo to zalezy od tego co kto by chcial zrobic

Jak masz czas mozesz sprobiwac zrobic cos malego a jak bedzie duze zainteresowanie to rozwiniesz

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO