Έχεις ήδη μάθει πώς να γεμίζεις μια ListBox με δεδομένα από μια βάση δεδομένων SQLite. Σε αυτό το μάθημα, επεκτείνουμε τις γνώσεις μας συνδέοντας ένα TextBox με αυτή τη ListBox. Αυτή η σύνδεση σου επιτρέπει να αλλάζεις, να διαγράφεις ή να προσθέτεις νέες τιμές. Επιπλέον, θα δείξουμε πώς να παρακολουθείς την επιλογή στη ListBox και να εμφανίζεις την τιμή της στο TextBox. Έτσι μπορείς να κάνεις την εφαρμογή σου πιο διαδραστική και φιλική προς τον χρήστη.
Βασικές γνώσεις
- Συνδέεις ένα TextBox με μια ListBox για να εμφανίσεις δυναμικά την επιλογή.
- Χρησιμοποιώντας μια βάση δεδομένων SQLite, μπορείς να αποθηκεύεις και να ανακτάς τα δεδομένα σου με μόνιμο τρόπο.
- Εφαρμόζουμε μέτρα πρόληψης σφαλμάτων για να αποφεύγουμε ανεπιθύμητες εξαιρέσεις.
Βήμα-βήμα οδηγίες
Αρχικά, ρίχνουμε μια ματιά στο πώς μπορούμε να δημιουργήσουμε τη σύνδεση μεταξύ του TextBox μας και της ListBox:
1. Ερωτήσου την επιλογή στη ListBox
Για να παρακολουθήσουμε την επιλογή στη ListBox, πρέπει να προσθέσουμε κώδικα για τα αντίστοιχα γεγονότα. Πρώτα πρέπει να ξέρουμε ποιο στοιχείο είναι αυτή τη στιγμή επιλεγμένο στη ListBox.

Για αυτό, αντιγράφουμε τον SQLiteCommand από την μέθοδο που γεμίζαμε τη ListBox. Εισάγουμε αυτόν τον κώδικα στη σωστή θέση και τον συμπληρώνουμε με μια SQL εντολή που ανακτά την επιλογή από τη βάση δεδομένων μας. Η SQL εντολή μπορεί να έχει την εξής μορφή: SELECT ID, Automarke FROM Automarken WHERE ID = @ID, όπου το @ID είναι μια θέση για την παράμετρο μας.
2. Πρόσθεσε παράμετρο στην SQL ερώτηση
Το επόμενο βήμα είναι να ορίσουμε την παράμετρο για την SQL ερώτηση. Εδώ χρησιμοποιούμε το πρωτεύον κλειδί (Primary Key) για να επιλέξουμε τη σωστή μάρκα αυτοκινήτου.
Η εντολή βελτιστοποιείται, φέρνοντάς μας την ID της επιλεγμένης μάρκας αυτοκινήτου από τη ListBox. Αυτό γίνεται καλώντας την listBox.SelectedValue. Τώρα προσθέτουμε αυτή την παράμετρο στην ερώτηση.

3. Δημιουργία και γέμισμα μιας DataTable
Τώρα που έχουμε την SQL εντολή, πρέπει να δημιουργήσουμε μια DataTable για να επεξεργαστούμε τις ερωτήσεις. Ονομάζουμε αυτή τη DataTable myDataTable και προσθέτουμε τον SQLiteDataAdapter για να αρχικοποιήσουμε τα αποτελέσματα της SQL ερώτησής μας.

Μόλις η DataTable γεμίσει, μπορούμε να γεμίσουμε το TextBox με την τιμή της επιλεγμένης μάρκας αυτοκινήτου.

4. Εμφάνιση της επιλεγμένης μάρκας αυτοκινήτου στο TextBox
Για να ορίσουμε την τιμή από τη DataTable στο TextBox, ανακτούμε την πρώτη καταχώρηση της DataTable. Χρησιμοποιούμε myDataTable.Rows[0]["Automarke"].ToString() και θέτουμε το αποτέλεσμα στο TextBox.
5. Υλοποίηση διαχείρισης σφαλμάτων
Για να διασφαλίσουμε ότι δεν θα παρουσιαστούν σφάλματα κατά την εκτέλεση της εφαρμογής, πρέπει να εισάγουμε διαχείριση σφαλμάτων. Αυτό γίνεται ελέγχοντας αν έχει επιλεχθεί κάποιο στοιχείο στη ListBox πριν εκτελέσουμε την ερώτηση.
Εδώ χρησιμοποιούμε μια απλή συνθήκη: αν το myListBox.SelectedValue == null, τερματίζουμε τη μέθοδο. Αυτό το μέτρο εξασφαλίζει ότι δεν θα λάβουμε αναφορές null και η εφαρμογή θα παραμένει σταθερή.

6. Διεξαγωγή δοκιμών λειτουργίας
Μετά την εφαρμογή των παραπάνω βημάτων, είναι σημαντικό να δοκιμάσεις την εφαρμογή. Ξεκίνα το πρόγραμμα και έλεγξε αν κατά την εκίνηση εμφανίζεται αυτόματα η πρώτη καταχώρηση στη ListBox στο TextBox.

Αν τώρα αλλάξεις μεταξύ των διαφόρων μαρκών αυτοκινήτων, θα πρέπει να δεις ότι το TextBox ενημερώνεται δυναμικά για να εμφανίσει τη σχετική τιμή.

Τώρα που κατανοείς τις βασικές έννοιες και τον κώδικα για τη σύνδεση του TextBox με τη ListBox, μπορείς να βελτιώσεις περαιτέρω την εφαρμογή σου. Στο επόμενο βήμα, θα μάθουμε πώς να προσθέτεις νέες μάρκες αυτοκινήτων στη βάση δεδομένων μέσω ενός κουμπιού.
Συμπέρασμα – ListBox και TextBox στη C#: Δεδομένα συνδεδεμένα δυναμικά
Σε αυτή την οδηγία, έμαθες πώς να συνδέεις ένα TextBox με μια ListBox και να επιτύχεις τη δυναμική αλληλεπίδραση. Αυτή η έννοια σου ανοίγει νέες οδούς για να σχεδιάσεις εφαρμογές για χρήστες που είναι επιinformative και φιλικές προς τον χρήστη.
Συχνές ερωτήσεις
Τι να κάνω αν το TextBox δεν ενημερώνεται;Έλεγξε αν η ListBox επιστρέφει τη σωστή τιμή και αν ο DataAdapter έχει ρυθμιστεί σωστά.
Πώς να προσθέσω μια νέα μάρκα αυτοκινήτου;Αυτό θα το καλύψουμε στο επόμενο βίντεο, εισάγοντας ένα κουμπί που θα σου επιτρέπει να συνδέεις μάρκες αυτοκινήτων στη βάση δεδομένων.
Γιατί μετατρέπουμε τις εξόδους της DataTable σε String;Για να εξασφαλίσουμε ότι η τιμή στο TextBox εμφανίζεται σωστά ως κείμενο, πρέπει να την μετατρέπουμε σε String.