Tworzenie pierwszej aplikacji

Zajmiemy się teraz tworzeniem aplikacji i opisem najważniejszych kontrolek. Utwórz nowy projekt za pomocą Plik->Nowy->Projekt lub za pomocą klawisza skrótu Ctrl+Shift+N. Jako typ nowego projektu wybierz Aplikacja Windows Form o dowolnej nazwie. Po utworzeniu projektu, Visual Studio utworzy domyślny formularz, zwany potocznie oknem.
Okna (formularze, formatki) stanowią podstawę komunikacji programu z użytkownikiem stanowiąc wraz z umieszczonymi na nich komponentami/kontrolkami graficzny interfejs użytkownika (GUI). Warto więc dokładnie przyjrzeć się tworzeniu okien oraz ich dostosowywaniu.

Każde nowo utworzone okno przybiera kolejne nazwy Form, np. Form1, Form2, Form3, itd.

form1

Główne okno programu, zwykle nazywa się Form1, gdyż najczęściej jest tworzone jako pierwsze wraz z nowym projektem. Tworząc aplikację, warto na bieżąco (po utworzeniu kolejnego okna) zmieniać nazwy okien na bardziej znaczące. Np. okno główne Form1, mozna przemianować w oknie własciwości w polu (name) na np. okno_glowne. Zaś np. okno konfiguracji na okno_konfig. Powyższe nazwy są tylko przykładami. Ważne, aby przyjąć sobie stałe nazewnictwo, które sprawi, że odwoływanie się do poszczególnych okien będzie w jakiś sposób uporządkowane i logiczne. Dobrą praktyką jest stosowanie nazw, typu: formMain, formConfig, etc., gdyz wiadomo, ze form, oznacza formularz.

Wraz z nowym projektem utworzono nowy formularz Form1. Można już na tym etapie skompilować i uruchomić program używając klawisza F5. Po uruchomieniu można zmieniać rozmiar okna, przenosić go i używać przycisków okna (piktogramów) minimalizując okno lub je maksymalizując.

Zakończ program poprzez jego zamknięcie lub wciśnij Shift+F5. Testowany program zakończy działanie i wrócisz do trybu projektowania aplikacji. Zaznacz teraz okno i przejrzyj dostępne opcje w oknie właściwości komponentu (Okno Właściwości). W poniższej tabeli znajdziesz właściwości formularza oraz opis ich zastosowania. Aby uaktywnić edycję właściwości w oknie własciwości, okno należy zaznaczyć przez kliknięcie myszką.

Oto najważniejsze właściwości formularza.

Właściwość Opis działania
(Name) Nazwa formularza. Domyślnie kolejne formularze otrzymują nazwy: Form1, Form2, Form3, itp.  Poprzez tę nazwę odwołujesz się do konkretnego okna, warto więc zadbać o to, aby nazwa okna identyfikowała dane okno, np. Okno konfiguracji twojego programu możesz nazwać okno_konfig. Wybór nazwy należy do ciebie, pamiętaj tylko, aby nie używać polskich znaków oraz znaków specjalnych.
AcceptButton Jeśli na formularzu znajdują się przyciski, to wybieramy tutaj przycisk domyślny, tj. przycisk, który zostanie uruchomiony po wciśnięciu klawisza Enter.
CancelButton Domyślny przycisk, który uruchomi się po wciśnięciu klawisza Esc.
ControlBox Określa, czy na belce tytułu okna mają być wyświetlane piktogramy sterujące, np. minimalizacja, zamknięcie, itp.
FormBorderStyle Właściwość określa typ okna. Domyślnie jest to Sizable, co oznacza, iż można zmieniać jego wielkość, minimalizować go czy maksymalizować.

  • None określa formularz bez paska tytułowego (obramowania)
  • FixedToolWindow – brak możliwości zmiany rozmiaru, niedostępne po wciśnięciu kombinacji klawiszy Alt+Tab
  • SizeableToolWindow – jak wyżej, ale z możliwością zmiany rozmiarów okna
  • FixedSingle oznacza, że wielość okna jest zdefiniowana podczas projektowania formularza i nie można jej zmieniać. Można jednak minimalizować i maksymalizować.
  • Fixed3D oznacza okno sprawiający wrażenie 3D
  • FixedDialog – styl okna dialogowego, bez możliwości zmiany formy
MaximizeBox Określa, czy na pasku tytułowym okna aktywny jest przycisk do maksymalizacji okna
MinimizeButton Określa, czy na pasku tytułowym okna aktywny jest przycisk do minimalizowania okna
BackColor Określa kolor tła formularza
BackGroundImage Określa obrazek, który wyświetlany jest na formie zamiast standardowego koloru formatki
Text Określa tytuł okna na pasku tytułu. Możesz stosować dowolne teksty, które zwykle informują użytkownika, do czego służy konkretne okno, np. Okno konfiguracji możesz nazwać po prostu: Konfiguracja programu.
Locked Blokuje możliwość wprowadzania zmian na formularzu w trybie projektowania.
AutoSize Gdy ustawione na True, formularz automatycznie dopasowuje swoją wielkość w zależności od umieszczonych na nim komponentów
StartPosition Pozycja określająca umieszczenie formularza na ekranie po wyświetleniu. Domyślnie wartość  ta jest ustalona na WindowsDefaultLocation.

  • Manual – zachowane jest rozmieszczenie podczas projektowania systemu, zgodnie z parametrem Location
  • WindowsDefaultBounds – domyślne położenie okna
  • CenterParent – centralnie do formularza nadrzędnego, z którego wywołujesz okno potomne
  • CenterScreen – centrowanie do środka ekranu
Location Współrzędne początkowe okna po wyświetleniu na ekranie
HelpButton Określenie, czy formularz powinien zawierać ikonę pomocy
WindowsState Określenie, czy po wyświetleniu okna powinno być ono:

  • Normal – wyświetlone normalnie
  • Minimized – zminimalizowane
  • Maximized – zmaksymalizowane
ShowInTaskbar Czy po wyświetleniu okno powinno występować na pasku zadań
Size Wielkość okna. Można ustalać myszką lub wpisująć tutaj odpowiednie wartości
MinimumSize Określa minimalną wielkość okna. Dzięki tym wartościom, okno można zmniejszać ale w ograniczonym tutaj zakresie
MaximumSize Określa maksymalną wielkość okna. Podobnie jak wyżej, okno można zwiększać ale w ograniczonym tutaj zakresie
Localizable Określa, czy formularz jest przystosowany do obsługi wielu języyków
Language Zdefiniowany język formularza. Przydatne podczas tworzenia programów wielojęzykowych
Font Domyślna czcionka formularza dla kolejno umieszczanych  komponentów.
Icon Ikona formularza
IsMdiContainer Czy formularz jest formularzem zdefiniowanym jako nadrzędne okno aplikacji MDI (Multiple Document Interface)
ForeColor Określa kolor tekstu dla komponentów
AutoScroll Określenie, czy wyświetlać w razie potrzeby paski przewijania
AllowDrop Jeśli dopuszczasz upuszczanie wartości przez technologię Drag and Drop, zaznacz na True
Opacity Preźroczystość formy; 100% – nieprzeźroczysta, 0% – całkiem przeźroczysta
Enabled Określa włączenie i wyłączenie formy. W przypadku False, okno zostanie wyświetlowe ale nie będą aktywne żadne komponenty na formie
ContextMenuStrip Określa menu podręczne (wcześniej zdefiniowany komponent ContextMenuStrip), który będzie dostępny po najechaniu kursorem na formularz i użyciu prawego klawisza myszy

Najważniejsze zdarzenia formularza:

Zdarzenie Zachodzi podczas…
Activated Aktywacji okna
Clicked Gdy klikniesz myszką na formie
Deactivate Podczas deaktywacji okna
DoubleClick Podwójnie klikniesz na formie
Enter Gdy przechodzisz na komponent Form1
FormClosed Po zamknięciu okna
MouseEnter Gdy kursor myszy wejdzie na obszar okna
MouseLeave Gdy kursor myszy opuści obszar okna
Resize Gdy zmienisz rozmiar okna
Move Zdarzenie jest generowane, gdy okno jest przesuwane
Load Zachodzi, gdy okno jest ładowane

Jak wiadomo, twoja aplikacja może mieć dowolnie dużo okien, które pokazują się na ekranie po wybraniu odpowiedniej opcji z menu, paska narzędzi lub przycisku. Aby do projektu dodać nowe okno czyli formularz, należy wybrać z menu Project -> Add Windows Form… a następnie wybrać Windows Form, wpisać jego nazwę i potwierdzić przyciskiem Add. Jak wiesz z poprzednich rozdziałów, możesz przełączać się pomiędzy projektowaniem wizualnym a edytorem kodu źródłowego. Do przełączania się pomiędzy trybami można wykorzystać menu. Opcje trybu projektowania wizualnego i edycji kodu źródłowego w nenu Widok lub klawiatury:  F7 – Tryb edycji kodu oraz Shift+F7 – tryb wizualnego projektowania.

Po przełączenieu się na tryb edycji kodu źródłowego, Visual Studio wyświetli edytor źródła programu. Kod który ujrzysz, będzie taki, jak przedstawiony poniżej.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}

Dodawanie komponentów fo formularza

Komponenty/kontrolki z okna Przybornik układa się na wybranym formularzu (oknie) w następujący sposób:

  1. Przejdź do trybu projektowania (Design) – klawisz F7
  2. W oknie Przybornik zaznacz właściwy komponent i przenieś go myszką na obszar formularza.

addkontrol
Komponenty na formularzu można dowolnie przesuwać, bądź usuwać. Aby usunąć komponent z formatki, należy go zaznaczyć i wcisnąć klawisz Delete lub wybrać opcję Delete z podręcznego menu wyświetlanego pod prawym klawiszem myszy.

Opis podstawowych kontrolek

Etykieta – label to kontrolka, za pomocą której można wyświetlać na formatce dowolną informację. Etykieta może pełnić jedynie fukcję statyczną (bez zmiany tekstu). W tym przypadku nie zmienia swej zawartości podczas działania programu. Najczęściej etykiety statyczny wykorzystuje się do opisywania zastosowania innych elementów aplikacji. Jednak w naszych programach możemy użyć etykiety dynamicznej. Wówczas podczas pracy w programie zmieniamy programowo jej tekst informując użytkownika o wyniku operacji.

Otwórz poprzedni przykład lub utwórz nowy projekt Aplikacja Windows Forma i trybie projektowania (Design) przejdź do okna Przybornik i przenieś komponent Label na dowolne miejscu formularza. Nowo utworzony komponent formularza możesz dowolnie przenosić. W tym celu uchwyć go lewym przyciskiem myszy i przesuwaj po formularzu.
labelkomp
Nowa etykieta wyświetla treść label1. Jeśli dodasz kolejny komponent, będą one numerowane automatycznie. Należy teraz nadać kontrolce sensowną treść. Upewnij się, że etykieta jest zaznaczona i przejdź do okna Właściwości, w której znajdź wiersz Text i wpisz do niego dowolną treść potwierdzając klawiszem Enter.

Wskazówka: Podczas dodawania nowego elementu do formularza, każdy komponent, który służy do wyświetlania tekstu posiada nazwę (name) oraz treść (text) i te właściwości znajdziesz w oknie Właściwości. Zaraz po dodaniu kontrolki do formy, nazwa (Name) oraz treść (Text) jest zwykle taka sama. Właściwość Name, to nazwa przydzielona komponentowi, przez którą będziesz się do komponemntu odwoływać. Pamiętaj, aby nie stosować tutaj polskich znaków, spacji i znaków specjalnych. Możesz natomiast stosować dolne podkreślenie, np. label_info.

Oprócz właściwości name oraz text, etykieta posiada wiele innych ciekawych właściwości. Oto one:

Właściwość Opis działania
(Name) Nazwa etykiety. Domyślnie kolejne formularze otrzymują nazwy: Label1, Label2, Label3, itp.
BackColor Określa kolor tła formularza
Text Określa tekst, jaki znajdzie się na etykiecie i będzie widoczny dla użytkiownika
Locked Blokuje możliwość wprowadzania zmian na formularzu w trybie projektowania.
Location Współrzędne początkowe okna po wyświetleniu na ekranie
Size Wielkość okna. Można ustalać myszką lub wpisująć tutaj odpowiednie wartości
MinimumSize Określa minimalną wielkość okna. Dzięki tym wartościom, okno można zmniejszać ale w ograniczonym tutaj zakresie
MaximumSize Określa maksymalną wielkość okna. Podobnie jak wyżej, okno można zwiększać ale w ograniczonym tutaj zakresie
Font Domyślna czcionka etykiety
ForeColor Określa kolor tekstu dla komponentów
AutoSize Określenie, czy w razie potrzeby zwiększyć wymiar etykiety
AllowDrop Jeśli dopuszczasz upuszczanie wartości przez technologię Drag and Drop, zaznacz na True
Enabled Określa włączenie i wyłączenie formy. W przypadku False, okno zostanie wyświetlowe ale nie będą aktywne żadne komponenty na formie

Spróbuj zmienić tekst etykiety z Label1 na dowolny tekt, posługując się właściwością Text. Zmień czcionkę etykiety edytując właściwość Font. Za każdym razem uruchamiaj program klawiszem F5.

Choć wartości początkowe etykiety możemy ustalić w trybie projektowania, to w przypadku, gdy chcemy zmienić wybraną z tabeli właściwość podczas działania programu, możemy odwołać się bezpośrednio do obiektu etykiety poprzez nazwę (name) komponentu. Dostęp do poszczególnych metod i właściwości etykiety uzyskujemy wpisując nazwę komponentu na formularzu (Name, którą zdefiniowaliśmy podczas dodawania nowego komponentu) oraz po kropce nazwę właściwości lub metody (tabela powyżej). Aby więc w trakcie działania programu zmienić tekst wyświetlany przez etykietę, wystarczy w definicji zdarzenia wpisać:

nazwa_etykiety.Text(„Nasz nowy tekst etykiety”);

Jeśli etykieta w założeniu ma wyświetlać zmienne numeryczne, to warto wiedzieć, że etykieta może formatować wyświetlaną zmienną. Dla przykładu zmienna zmiennoprzecinkowa typu float wyświetlona zostanie w całości. Jednak jeśli chcemy pozostawić dwa zera po przecinku, należy zastosować konwersję oraz formatowanie. Oczywiście formatowanie może być przystosowanie do konkretnych celów i to ty decydujesz, jak sformatujesz wyniki działania programu.

float wartosc = 1253.24374
label1.Text = "Wartość: " + wartosc.ToString("0.00")

Przyciski – buttons są niezbędnymi elementami interakcji z użytkownikiem, ponieważ pozwalają na wyzwalanie jakiejś akcji w programie. Ulepszymy teraz poprzedni przykład, dodając do formularza obiekt Button, czyli przycisk. Jak poprzednio, wybieramy z Przybornika komponent Button i upuszczamy go na formularzu. Można już uruchomić aplikację klawiszem F5 by zobaczyć działanie przycisku.
buttonkomp
Choć program z pewnością zadziała, to na obecnym etapie nie zostało zdefiniowane żadne zdarzenie, które zostanie wywołane poi jego wciśnięciu, stąd wciskanie przycisku nie spowoduje żadnej reakcji.

Każdy komponent generuje jakieś zdarzenia (np. wciśnięcie, zmiana treści, najechanie myszą), zaś podstawowym zdarzeniem dla przycisków jest wciśnięcie (Click). Dl aprzykładu należy wygenerować zdarzenie dla kliknięcia, które zmieni treść etykiety label1.

  1. Zmieniamy tekst przycisku informując w ten sposób użytkownika, do czego przycisk ten ma służyć. W tym celu edytujemy w edytorze właściwości (Okno właściwości) opcję Text. Wpisz tam dowolny tekst, np: Zmień etykietę.
  2. Dwukrotnie klikamy na przycisku w trybie projektowania, co spowoduje utworzenie zdarzenia Click w postaci wygenerowania w kodzie button1_Click i przeniesie do okna edycji kodu źródłowego.
  3. Ostatnim krokiem jest wpisanie przez nas kodu, definiującego akcję w przypadku wciśnięcia przycisku.

Zwykle kod obsługi zdarzenia wygląda tak:

private void button1_Click(object sender, EventArgs e)
    {
     label1.Text = ”Nowa nazwa”;
    }

Uruchom program klawiszem F5. Po uruchomieniu programu użyj ponownie przycisku. Tym razem wciśnięcie przycisku z pewnością spowoduje reakcję.

Pole wyboru –  CheckBox to inny rodzaj przycisków. Pole wyboru służy do zaznaczania opcjonalnych elementów programu. Komponent przycisk z poprzedniego przykładu, służył do włączania konkretnej akcji w programie po kliknięciu myszą. Jednak po kliknięciu jego stan z powrotem wracał do pozycji „niewciśnięty”. Co jednak zrobić, jeśli chcemy dać użytkownikowi wybór szeregu opcji, które mają być uwzględniane np. podczas wyszukiwania? Rozwiązaniem w tym przypadku jest pole wyboru, które posiada dwa stany – włączone oraz wyłączone. Algorytm wykonujący przeszukiwanie powinien sprawdzić stan pola wyboru i pod tym kontem modyfikować swoje działanie.

Pole tekstowe – TextBox to komponent używany w przypadku konieczności pobrania jednej linii danych od użytkownika. Po zmianie właściwości Multiline na True, kontrolka pozwala na pobieranie wielolinijkowych tekstów  – podobnie jak w przypadku windowsowego notatnika. TextBox wykorzystuje się zwykle do pobierania wartości tekstowych, gdyż kontrolka zwraca wpisany przez użytkownika tekst jako zmienną tekstową. Nie oznacza to jednak, że nie można wykorzystać jej do odbierania danych numerycznych. W tym przypadku musisz jednak zadbrać o konwersję zmiennej tekstowej do zmiennej numerycznej. Komponent najlepiej zilustrować na przykładzie praktycznym, stąd napiszemy teraz prostą aplikację wykorzystującą poznane już komponenty. Utwórz nowy projekt Aplikacja Windows Forms lub skorzystaj z poprzedniej i na fomie umieść wymagane komponenty. Ustal parametry komponentów aby były takie, jak na obrazku poniżej. Dodatkowo w komponencie CheckBox ustal właściwość Checked na True, oraz w właściwość Text komponentu TextBox wpisz dowolny tekst.
textbox1
Teraz należy wpisać kod zdarzenia dla przycisku. Założenie jest takie, że po wciśnięciu przycisku sprawdzany jest stan Pokaż informację. Jeśli pole jest zaznaczone, wówczas zwrócii wartość True. Dodatkowo, w przypadku zaznaczenia tego pola, sprawdzana jest właściwość Text kontrolki TextBox. Jeśli jest większa od zera, to oznacza, że w kontrolce znajduje się tekst i można wyświetlić okno z informacją. Jeśli jednak użytkownik nie wypełnił pola TextBox, okienko z informacją nie będzie wyświetlone. Aby dodać kod zdarzenia reagującego na wciśnięcie przycisku, w trybie projektowania formularza kliknij dwa razy na przycisku „Kliknij mnie!”. Teraz zostaniesz przeniesiony do edytora kodu źródłowego. Wpisz trzy linijki kodu:

private void button1_Click(object sender, EventArgs e)
  {
   if(checkBox1.Checked)
      if(textBox1.Text.Length > 0)
           MessageBox.Show(textBox1.Text);
  }

i uruchom program klawiszem F5.

Komponent TextBox posiada wiele metod i właściwości, jednak najczęsciej używaną, odpowiadająca za pobieranie i wyświetlanie tekstu jest właściwość Text. W naszym programie zastosowaliśmy także prostą metodę kontroli ilości znaków znajdujących się w TextBox poprzez właściwość Length. Funkcja ta zwraca zmienną liczbową ilość wpisanych znaków. Jeśli chcesz wykorzystać TextBox w trybie wielolinijkowym, wystarczy włączyć opcję MultiLine na True. Po tym zabiegu kontrolkę możesz rozszerzyć na całą formatkę i wykorzystać jako prosty edytor tekstu.

Pole radiowe (RadioButton)
Pole radiowe służy do wyboru jednej opcji z wielu dostępnych. Sama nazwa radiowe przypomina nieco przyciski radioodbiornika, w którym można wybrać jedną z wielu zaprogramowanych stacji radiowych. Przyciski radiowe zwykle grupuje się w estetyczne ramki GroupBox.
radiob1
Sprawdzenie wartości wciśnięcia przyciskó można zreaslizować w kodzie następująco:

if (radioButton1.Checked) MessageBox.Show("Twój ulubiony owoc to jabłko!");
if (radioButton2.Checked) MessageBox.Show("Twój ulubiony owoc to banan!");
if (radioButton3.Checked) MessageBox.Show("Twój ulubiony owoc to pomarańcza!");
if (radioButton4.Checked) MessageBox.Show("Twój ulubiony owoc to śliwka!");

Lista – ListBox stanowi ważny element budowy interfejsu użytkownika umożliwiając wyświetlenie dowolnych elementów – np. pól rekordów z bazy danych. Użytkownik może je również zaznaczać. Listy umożliwiają zaznaczanie pojedynczego elementu lub zaznaczanie wielu elementów naraz. Zbudujemy teraz program, który będzie korzystał z listy. Lista pierwsza będzie zawierać domyślnie listę dostępnych zakupów. Po zaznaczeniu dowolnego elementu listy i kliknięciu przycisku dodaj, element tejn zostanie przeniesiony do listy drugiej, stanowiącej listę zakupów.

Utwórz nową aplikację Windows Aplication używając kombinacji klawiszy Shift+Ctrl+N lub z menu Plik->Nowy->Projekt i nazwij go dowolnie. Ustał właściwości formularza głównego: TextPrzykład listy, StartPositionCenter screen, FormBorderStyleFixedSingle. Na formularzu dodaj 2 komponenty ListBox, którym nadaj właściwości: namelista1 oraz lista2, w obu listach włącz właściwość Sort na true. Jak widać na obrazku poniżej, pierwsza lista zawiera domyślnie kilka elementów. Pozycje te dodajemy poprzez wyedytowanie właściwości Items listy. Zaznacz więc listę numer 1 i kliknij właściwość Items w oknie właściwości.

Po dodaniu wszystkich elementów, naciśnij przycisk OK aby zamknąć edycję listy. Możesz tworzyć dowolne elementy w dowolnej liczbie. Tutaj prezentuję jedynie przykład, który akurat przyszedł mi do głowy. Dodaj teraz kolejne elementy formularza – przyciski (Buttons) i etykiety (Labels). W przyciskach zmień właściwość Text jak na rysunku poniżej.
lists1
Jeśli Twój projekt wygląda już ja ten z rysunku powyżej, możesz przystąpić do programowania zdarzeń reakcji na ich wciśnięcie. Zaczniemy od przycisku Dodaj >. Kliknij na nim dwa razy, aby przejść do trybu edycji kodu. Wpisz obsługę zdarzenia:

private void button1_Click(object sender, EventArgs e)
        {
            if (lista1.SelectedIndex > -1)
            {
                lista2.Items.Add(lista1.SelectedItem);
                lista1.Items.RemoveAt(lista1.SelectedIndex);
            } else MessageBox.Show("Najpierw zaznacz element na liście 1");
        }

Następnie wróć do trybu projektowania używając kombinacji Shift+F7 i utwórz kod zdarzenia dla przycisku < Usuń.

private void button2_Click(object sender, EventArgs e)
        {
           if (lista2.SelectedIndex > -1) 
           {
            lista1.Items.Add(lista2.SelectedItem);
            lista2.Items.RemoveAt(lista2.SelectedIndex); 
           } else MessageBox.Show("Najpierw zaznacz element na liście 2");
        }

Na koniec utwórz obsługę zdarzenie przycisku Zakończ. W tym przypadku wystarczy jedna linia:

Application.Exit();

Możesz już uruchomić aplikację przy pomocy klawisza F5. Jeśli wszystko dobrze wpisałeś, program powinien działać. Jeśli jednak coś nie działa, sprawdź dokładnie składnię na podstawie poniższego listingu.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Lista
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (lista1.SelectedIndex > -1)
            {
                lista2.Items.Add(lista1.SelectedItem);
                lista1.Items.RemoveAt(lista1.SelectedIndex);
            } else MessageBox.Show("Najpierw zaznacz element na liście 1");
        }
        private void button2_Click(object sender, EventArgs e)
        {
           if (lista2.SelectedIndex > -1) 
           {
            lista1.Items.Add(lista2.SelectedItem);
            lista2.Items.RemoveAt(lista2.SelectedIndex); 
           } else MessageBox.Show("Najpierw zaznacz element na liście 2");
        }
        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

Omówienia wymagają linie programu odpowiedzialne za pracę z komponentem ListBox. W linii zawierającej lista2.SelectedIndex > -1 sprawdzamy, czy użytkownik zaznaczył jeden z elementów. Właściwość SelectedItems zwraca -1, gdy na liście nie jest zaznaczony żaden element. W przypadku zaznaczenie elementu, zostanie zwrócony indeks zaznaczonego elementu. W celu dodania nowej pozycji listy, posłużymy się metodą Add. Aby dodać kolejną pozycję do listy, wpiszemy: lista1.Items.Add(„Tekst dodawany”); zaś w celu usunięcia pozycji z listy o indekcie 2 używamy lista1.Items.RemoveAt(2); Można także w prosty sposób sprawdzić, ile elementów dana lista zawiera: lista1.Items.Count;

441total visits,2visits today

Tagi , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

4 + 1 =

This site uses Akismet to reduce spam. Learn how your comment data is processed.