Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

c# Αποστολή δεδομένων από μία φόρμα σε άλλη

Îåêßíçóå áðü ôï ìÝëïò lyros. Τελευταία δημοσίευση από το μέλος lyros στις 01-11-2007, 16:55. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  30-10-2007, 16:55 36795

    c# Αποστολή δεδομένων από μία φόρμα σε άλλη

    Γειά σας,

    Χρειάζομαι τη συμβουλή σας για να στείλω δεδομένα από μια φόρμα σε άλλη σε desktop εφαρμογή. Χρησιμοποιώ c# σε visual studio 2005.

    Αυτό που θέλω να κάνει είναι μόλις πατηθεί το κουμπί εισόδου στη μια φόρμα, να ανοίξει η άλλη φόρμα (σαν pop-up), όπου ζητάει username και password.Αν τα δεδομένα είναι σωστά, μόλις πατηθεί το κουμπί ,έστω ,OK της 2ης φόρμας, να εμφανιστεί πάλι η πρώτη φόρμα με το id του χρήστη (εννοώ να ξαναγίνει modal η πρώτη φόρμα και να κλείσει η δεύτερη).

    Ο μόνος τρόπος που γνωρίζω για αποστολή δεδομένων, είναι με instance της αντίστοιχης φόρμας (Form2 f2 = new Form2()) και να προσθέσω ένα tag (f2.Tag = ...) με την τιμή που θέλω.Όμως αυτός ο τρόπος μου χρησιμεύει μόνο όταν ανοίγω μια φόρμα, και όχι όταν τρέχει ήδη...

    Καμία ιδέα???

    Ευχαριστώ πολύ!!


    panos
  •  30-10-2007, 19:26 36802 σε απάντηση της 36795

    Απ: c# Αποστολή δεδομένων από μία φόρμα σε άλλη

    Μετά από λίγο ψάξιμο, έφτιαξα μια κλάση στο program.cs

    static class GlobalClass{

    private static string globalStr = "";

    public static string GlobalString{

    get { return globalStr; }

    set { globalStr = value; }

    }

    }

    Στην ουσία χρησιμοποιώ μια static μεταβλητή την οποία μπορώ να 'δω' από παντού (κάτι σαν global...αν και απ'ότι κατάλαβα δεν έχει global στη c#...γιατί??)

    Για να έχω πρόσβαση στη μεταβλητή αυτή χρησιμοποιώ:

    GlobalClass.GlobalString = "Τα δεδομένα μου"; για να αποδόσω τιμή και

    label.Text = GlobalClass.GlobalString; για να πάρω την τιμή

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

    Από την πρώτη φόρμα μόλις πατηθεί το κουμπί εισόδου ανοίγει η δεύτερη φόρμα και στη συνέχεια δίνω την "global" τιμή στο label.Text της πρώτης φόρμας.Η δεύτερη φόρμα αναθέτει την τιμή στη static μεταβλητή μόλις πατηθεί το κουμπί "OK". Όμως αν δεν κλείσει αυτή η δεύτερη φόρμα (είτε προσθέτοντας this.close, στο κουμί OK, είτε πατώντας κλείσιμο της φόρμας), το label της φορμας 1 δεν λαμβάνει την τιμή...Στην παρούσα εφαρμογή δε μου χρειάζεται κάτι παραπάνω, όμως θα ήθελα να ξέρω τον βέλτιστο τρόπο...Άκόμα θα ήθελα και τυχόν παρατηρήσεις στον τρόπο που ακολούθησα.

     


    panos
  •  30-10-2007, 22:43 36809 σε απάντηση της 36802

    Απ: c# Αποστολή δεδομένων από μία φόρμα σε άλλη

    Γιατί δεν βάζεις αυτό το property που έγραψες στη Form2;
    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  30-10-2007, 23:06 36812 σε απάντηση της 36809

    Απ: c# Αποστολή δεδομένων από μία φόρμα σε άλλη

    Συγνώμη dt008, δεν κατάλαβα ποιό property να βάλω στη form2?
    panos
  •  30-10-2007, 23:39 36813 σε απάντηση της 36812

    Απ: c# Αποστολή δεδομένων από μία φόρμα σε άλλη

    1η φόρμα:

    Form2 form = new Form();
    if (form.ShowDialog() == DialogResult.OK)....

    2η φόρμα. Πριν κλήσει η φόρμα θα θέσεις το DialogResult της φόρμας ανάλογα με το αν ο έλεγχος του password ήταν θετικός ή όχι:

    this.DialogResult = DialogResult.OK ή this.DialogResult = DialogResult.Cancel

    Ξέχνα οτιδήποτε έχει να κάνει με global μεταβλητές. Είναι πολύ σπάνια σωστή πρακτική και όταν είναι δεν είναι για αυτό το σκοπό! Τζιιιζζζζ!
     


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  31-10-2007, 00:55 36816 σε απάντηση της 36813

    Απ: c# Αποστολή δεδομένων από μία φόρμα σε άλλη

    Ευχαριστώ Δημήτρη,

    δε νομίζω ότι με αυτό τον τρόπο όμως θα κάνω αυτό που ζήτησα στα προηγούμενα posts.

    Αν κατάλαβα καλά αυτό που μου επιστρέφει είναι ένα dialogResult, δηλαδή ή κάποιο συγκεκριμένο int ή κάποιο 'Yes', 'OK' κτλ.

    Αυτό που χρειάζομαι είναι από τη form2 που κάνει ένα query στη βάση να παίρνω το αντίστοιχο id του χρήστη αν είναι σωστό το uname και password. Εννοώ ότι αν το username και password είναι σωστά τότε το αντίστοιχο id το "στέλνει" στη form1

    Ο μόνος τρόπος που βρήκα και κατάφερα να δοκιμάσω είναι με τη static class... Αν δεν κατάλαβα σωστά θα ήθελα μια πιο αναλυτική εξήγηση

    Επίσης είμαι νέος στον προγραμματισμό και κάποια αυτονόητα ίσως μου ξεφεύγουν.

    Ευχαριστώ και πάλι!!

     


    panos
  •  31-10-2007, 01:11 36817 σε απάντηση της 36816

    Απ: c# Αποστολή δεδομένων από μία φόρμα σε άλλη

    Όσον αφορά τα properties, δες το παρακάτω παράδειγμα

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Form2 : Form
    {
    //other code....

    private int _UserID;
    public int UserID
    {
    get {return _UserID;}
    set {_UserID = value;}
    }

    //other code....
    }

    Οπότε, μπορείς να κάνεις set το _UserID μέσα από το instance της Form2, και μετά από τη Form1, να το ελέγχεις (μέσα από το UserID property) αν έχει κάποια τιμή (ας πούμε) > 0. Αν ναι, τότε είναι αυτό το ID του χρήστη, που έκανε επιτυχώς login. Αν είναι < ή = του 0, τότε το login ήταν ανεπιτυχές.

    Φυσικά, μπορείς να παίξεις όπως θες (π.χ. ένα άλλο boolean property για το αν το login ήταν επιτυχές ή όχι, κ.λ.π.) Επίσης, τώρα που το ξαναβλέπω, μπορεί να θες να βγάλεις και το set από το UserID property (δεν θα θες πιθανώς να το κάνεις set "απ'έξω" από τη φόρμα). Anyway, πιστεύω ότι την κατάλαβες την γενική ιδέα Smile


    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  01-11-2007, 16:55 36861 σε απάντηση της 36817

    Απ: c# Αποστολή δεδομένων από μία φόρμα σε άλλη

    OK, το' πιασα dt008...

    Δεν το δοκίμασα ακόμα αλλά μου φαίνεται πολύ λογικό!

    Πιστεύω πως θα παίξει... Μόλις το δοκιμάσω θα θέσω την ενότητα σαν επιλυμένη!

    Ευχαριστώ πολύ!!


    panos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems