DataGridView Często potrzebujemy obiektu, który wyświetliłby tabelę zawierającą kilka kolumn i kilka wierszy. Dobrze do tego celu nadaje się obiekt DataGridView. Po przeniesieniu obiektu na formularz jest on pusty brak kolumn i wierszy - pojawi się jednak podręczna lista zadań (datagridview Tasks), rys. 1, z której moŝemy wybrać potrzebne działania. Rysunek 1 Aby dodawać kolumny wybieramy z listy zadań Add Column..., co wywoła okno dodawania kolumn, rys. 2. Rysunek 2. Dodawanie kolumny Copyright 2011, Janusz Bonarowski 1
Po kliknięciu przycisku dodana zostanie kolumna. Proszę zwrócić uwagę na wartość pozycji Type: DataGridViewTextBoxColumn w dodanej kolumnie wiersze będą typu TextBox., patrz rys.3. Rysunek 3. DataGridView po dodaniu kolumny typu tekstowego MoŜemy dodawać kolumny typu: Przycisk DataGridViewButtonColumn Kratka wyboru DataGridViewCheckBoxColumn ListaRozwijalna DataGridViewComboBoxColumn Rysunek DataGridViewImageColumn Odsyłacz DataGridViewLinkColumn Okno tekstowe - DataGridViewTextBoxColumn Rysunek 4. Wybór typu kolumny Copyright 2011, Janusz Bonarowski 2
Początkowo zdefiniowano 6 kolumn o typach: (1) TextBox, (2) CheckBox, (3) ComboBox, (4) Image, (5) Link, (6) Button. W kaŝdej chwili moŝna zmienić wszystkie elementy w projektowanym obiekcie DataGridView. W tym celu naleŝy z listy zadań wybrać pozycję Edit Column, rys. 5 (1), co otworzy formularz edycji kolumn, rys. 5 (2). Rysunek 5. Edycja właściwości i rozmieszczenia kolumn Narzędzia tego formularza pozwalają zmieniać pozycję kolumny (3), właściwości wskazanej kolumny (4), dodawać i usuwać kolumny (5). Aby opanować dostęp do komórek obiektu DataGridView wykonajmy następujące zadanie. Zadanie Utworzyć obiekt DataGridView o trzech kolumnach typu TextBox i przyciski obsługujące procedury o następujących działaniach, patrz rys. 6: 1. Zapełnić Grid o 4 wierszach i 3 kolumnach kolejnymi liczbami całkowitymi, jak na rys. 6. 2. Zapełnić Grid o 3 wierszach i 3 kolumnach liczbą 1 na przekątnej głównej. 3. Zapełnić Grid o 3 wierszach i trzech kolumnach liczbą 2 na drugiej przekątnej. 4. Usunąć wiersz z indeksem 0 5. Usunąć wiersz z indeksem 1 6. Usunąć wiersz wskazany myszą (kliknięty) Rysunek 6 Copyright 2011, Janusz Bonarowski 3
Sposób odwołania się do pojedynczej komórki w celu pobrania/wstawienia wartości pokauje rys. 7. NaleŜy podkreślić, Ŝe komórki numerowane są od 0 i odwołujemy się do nich w kolejności: Item(kolumna, wiersz). Rysunek 7. Sposób zapełnienia komórek Kody procedur Private Sub btn4x3_kolejne_click(byval sender As _ Handles btn4x3_kolejne.click 'Zapełnianie siatki 4 wiersza na 3 kolumny kolejnymi liczbami. 'Uwaga na numerację kolumn i wierszy! 'numery 0 1 2 '-------+------------ ' 0 1 2 3 ' 1 4 5 6 ' 2 7 8 9 ' 3 10 11 12 '-------------------- Dim kol, wie, Liczba As Integer DataGridView1.Rows.Clear() Liczba = 0 For wie = 0 To 3 DataGridView1.Rows.Add() For kol = 0 To 2 Liczba = Liczba + 1 DataGridView1.Item(kol, wie).value = Liczba.ToString ---------------------- Copyright 2011, Janusz Bonarowski 4
Private Sub btn3x3 przekatna_jedynki_click(byval sender As _ Object, ByVal e As System.EventArgs) _ Handles btn3x3 przekatna_jedynki.click 'Wstawianie liczby 1 na głównej przekatnej ------------ Dim i As Integer DataGridView1.Rows.Clear() For i = 0 To 2 DataGridView1.Rows.Add() DataGridView1.Item(i, i).value = "1" ------ Private Sub btn3x3_druga_przekatna_2_click(byval sender As _ Object, ByVal e As System.EventArgs) _ Handles btn3x3_druga_przekatna_2.click 'Wstawianie liczby 2 na drugiej przekątnej ------------ Dim i As Integer DataGridView1.Rows.Clear() For i = 0 To 2 DataGridView1.Rows.Add() DataGridView1.Item(2 - i, i).value = "2" ---------- Private Sub btnusun_wiersz_click(byval sender As _ Handles btnusun_wiersz_0.click 'Usuwanie wiersza z indeksem 0 Dim odp As DialogResult odp = MsgBox("Czy usunąć pierwszy wiersz (z indexem 0)?", _ MsgBoxStyle.Question + MsgBoxStyle.YesNo) Try If odp = Windows.Forms.DialogResult.Yes Then DataGridView1.Rows.RemoveAt(0) End If Catch ex As Exception MsgBox(Err.Description & vbcrlf & _ "Tzn. takiego, który ma gwiazdkę",, _ "Błąd nr " & Err.Number) End Try Copyright 2011, Janusz Bonarowski 5
Private Sub btnusun_wiersz_1_click(byval sender As _ Handles btnusun_wiersz_1.click 'Usuwanie wiersza z indeksem 1 Dim LiczbaWierszy As Integer Dim odp As DialogResult odp = MsgBox("Czy usunąć wiersz z indexem 1 (czyli drugi)?", _ MsgBoxStyle.Question + MsgBoxStyle.YesNo) Try If odp = Windows.Forms.DialogResult.Yes Then LiczbaWierszy = DataGridView1.Rows.Count If LiczbaWierszy - 1 >= 1 Then MsgBox("LiczbaWierszy=" & _ LiczbaWierszy.ToString & vbcrlf & _ "Spróbujemy usunąć") End If DataGridView1.Rows.RemoveAt(1) End If Catch ex As Exception MsgBox(Err.Description,, "Błąd nr " & Err.Number) End Try Private Sub btnusunwskazanywiersz_click(byval sender As _ Handles btnusunwskazanywiersz.click 'Usuwanie wskazanego wiersza. 'Wiersz moŝna wskazać 'wskazując cały wiersz lub wskazując komórkę w wierszu ------------------------ Dim NrWiersza As Integer NrWiersza = DataGridView1.SelectedCells.Item(0).RowIndex ' -------------------------------------------- Try DataGridView1.Rows.RemoveAt(NrWiersza) -------- Catch ex As Exception MsgBox(Err.Description,, "Błąd nr " & Err.Number) End Try Copyright 2011, Janusz Bonarowski 6