Už si sa naučil, ako naplniť ListBox údajmi z databázy SQLite. V tejto lekcii rozšírime naše znalosti tak, že prepojíme TextBox s týmto ListBoxom. Toto prepojenie ti umožní meniť, mazať alebo pridávať nové hodnoty. Taktiež ukážeme, ako monitorovať výber v ListBoxe a zobraziť jeho hodnotu v TextBoxe. Takto môžeš svoju aplikáciu urobiť interaktívnejšou a používateľsky prívetivejšou.

Najdôležitejšie poznatky

  • Prepojíš TextBox s ListBoxom, aby si dynamicky zobrazil výber.
  • Použitím databázy SQLite môžeš svoje údaje trvalo uložiť a načítať.
  • Implementujeme opatrenia na predchádzanie chybám, aby sme sa vyhli nežiaducim výnimkám.

Návod krok za krokom

Najprv sa pozrieme na to, ako môžeme vytvoriť prepojenie medzi naším TextBoxom a ListBoxom:

1. Získanie výberu v ListBoxe

Aby sme mohli monitorovať výber v ListBoxe, musíme pridať kód pre príslušné udalosti. Najprv musíme vedieť, ktorý prvok je momentálne vybraný v ListBoxe.

Dynamické prepojenie medzi ListBox a TextBox v C#

Na to skopírujeme SQLiteCommand z metódy, ktorou sme naplnili ListBox. Tento kód vložíme na správne miesto a doplníme ho o SQL príkaz, ktorý načíta výber z našej databázy. SQL príkaz by mohol vyzerať takto: SELECT ID, Automarka FROM Automarken WHERE ID = @ID, kde @ID je zástupný znak pre náš parameter.

2. Pridať parameter do SQL dotazu

Nasledujúcim krokom je nastaviť parameter pre SQL dotaz. Tu použijeme primárny kľúč (Primary Key), aby sme vybrali správnu automarku.

Príkaz sa potom optimalizuje, keď z ListBoxu vyberieme ID vybratej automarky. To sa robí volaním listBox.SelectedValue. Potom pridáme tento parameter do dotazu.

Dynamické prepojenie ListBox a TextBox v C#

3. Vytvorenie a naplnenie DataTable

Teraz, keď máme SQL príkaz, musíme vytvoriť DataTable, aby sme spracovali dotazy. Túto DataTable nazveme myDataTable a potom pridáme SQLiteDataAdapter, aby sme inicializovali výsledky nášho SQL dotazu.

Dynamické prepojenie ListBox a TextBox v C#

Ako náhle je DataTable naplnená, môžeme naplniť TextBox hodnotou vybratej automarky.

Dynamická prepojenie medzi ListBox a TextBox v C#

4. Zobrazenie vybratej automarky v TextBoxe

Aby sme nastavili hodnotu z DataTable do TextBoxu, získame prvý záznam z DataTable. Používame myDataTable.Rows[0]["Automarka"].ToString() a výsledok nastavíme do TextBoxu.

5. Implementácia správy chýb

Aby sme zabezpečili, že pri spúšťaní aplikácie nedôjde k chybám, musíme zaviesť správu chýb. To sa robí tak, že pred vykonaním dotazu skontrolujeme, či je vybratý nejaký prvok v ListBoxe.

Tu používame jednoduchú podmienku: Ak myListBox.SelectedValue == null, prerušíme metódu. Toto opatrenie zabezpečuje, že nedostaneme null referencie a aplikácia bude stabilná.

Dynamická väzba medzi ListBox a TextBox v C#

6. Vykonanie funkčných testov

Po implementácii vyššie uvedených krokov je dôležité aplikáciu otestovať. Spusti program a skontroluj, či sa pri spustení automaticky zobrazuje prvý záznam v ListBoxe v TextBoxe.

Dynamické prepojenie ListBoxu a TextBoxu v C#

Ak teraz prechádzaš medzi rôznymi automarkami, mal by si vidieť, že TextBox sa dynamicky aktualizuje, aby zobrazoval príslušnú hodnotu.

Dynamické prepojenie ListBox a TextBox v C#

Teraz, keď chápeš základy a kód pre prepojenie TextBoxu a ListBoxu, môžeš svoju aplikáciu ďalej optimalizovať. V nasledujúcom kroku sa naučíme, ako môžeš pridať nové automarky do databázy pomocou tlačidla.

Zhrnutie – Prepojenie ListBoxu a TextBoxu v C#: Dynamické prepojenie údajov

V tomto návode si sa naučil, ako prepojiť TextBox s ListBoxom a realizovať jeho dynamickú interaktivitu. Tento koncept ti otvára nové možnosti na vytváranie používateľských aplikácií, ktoré sú informatívne a používateľsky prívetivé.

Často kladené otázky

Čo mám robiť, ak sa TextBox neaktualizuje?Skontroluj, či ListBox vracia správnu hodnotu a či bol DataAdapter správne nakonfigurovaný.

Kako pridám novú automarku?Toto budeme riešiť v ďalšom videu, kde pridáme tlačidlo, ktoré ti umožní pridať automarky do databázy.

Prečo prevádzame výstupy DataTable na reťazec?Aby sme zabezpečili, že hodnota v TextBoxe sa správne zobrazuje ako text, musíme ju previesť na reťazec.