MauriDalia Δημοσ. 21 Μαΐου 2012 Δημοσ. 21 Μαΐου 2012 Γνωρίζει κανείς πως θα συνδέσω τα πεδία μιας μια κλάσης(τις μεταβλητές μέλη της κλάσης) υλοποιημένης σε C#, με μια Windows Form? Για παράδειγμα έχω μια φόρμα και θέλω να υπολογίσω μια αριθμητική παράσταση χρησιμοποιώντας κάποιες μεταβλητές. Οι μεταβλητές που τις τιμές τις δίνω χρησιμοποιώντας textboxes στην φόρμα, είναι μέλη μιας κλάσης. Κοιτάζοντας είδα πως αυτό γίνετε με data binding..και πως πρέπει να κάνουμε Add new Source στην καρτέλα Data του Visual Studio. Αλλά δεν βλέπει την Βάση που φτιάχνω..
nspyrou Δημοσ. 21 Μαΐου 2012 Δημοσ. 21 Μαΐου 2012 Εγώ μπερδεύτηκα πάντως ... Σε βάση προσπαθείς να κάνεις data-bind ή σε Collection?? Θες να γίνεις λίγος πιο συγκεκριμένος/η για το τι προσπαθείς να κάνεις?! Κοίταξε: το DataBinding συνήθως δουλεύει με SQLDataSource, EntityDataSource, ObjectDataSource κλπ.. Αυτό σημαίνει οτι: Αν παίζεις με βάσεις δεδομένων, πως παίζεις?? Με DataSet? Αν ναι, σύνδεσε το Query σου σε ένα sqlDataSource, τα TextBoxes επάνω του και είσαι έτοιμος. Αν παίζεις με Entity Framework, κάνε populate ένα EntityDataSource, σύνδεσε τα πεδία επάνω του και είσαι οκ. Το ίδιο ισχύει και στη περίπτωση του Collection. Πχ, έχεις ένα List από αντικείμενά σου, πχ > List<MyObject> MyCollection = new List<MyObject>(); οπου συνδέεις επάνω στο EntityDataSource για να κάνεις bind. Αν γίνεις λίγος πιο συγκεκριμένος θα μπορέσουμε να πουμε και περισσότερα ...
MauriDalia Δημοσ. 21 Μαΐου 2012 Μέλος Δημοσ. 21 Μαΐου 2012 Εστω ότι έχω μια φόρμα που περιέχει 2 textboxes και ένα button για να κάνω μια πρόσθεση για παράδειγμα. Μέσα στο solution υπάρχει και ένα .cs αρχείο στο οποίο πρέπει να ορίσω μια κλάση πχ την ADD οποία περιέχει 2 μεταβλητές int μια συνάρτηση που υπολογίζει το αθροισμα τους. Το ερώτημα είναι το εξης. Πως συσχετίζω αυτές τις μεταβλητές της κλάσης με την Windform?
nspyrou Δημοσ. 21 Μαΐου 2012 Δημοσ. 21 Μαΐου 2012 Αυτό που ζητάς δεν έχει να κάνει με Databinding, αλλά με απλή διαδικασία ανάθεσης τιμών ... πχ ... έστω TextBox1 & TextBox2 & Button1 σε φόρμα Form1, και η παρακάτω κλάση: > public class MyClass { public MyClass() { } public int AddNumbers( int Num1, int Num2 ) { return (Num1 + Num2); } } οπότε στη Form1 θα έχεις: > private void Button1_Click(object sender, ... klp ) { MyClass myclass = new MyClass(); MessageBox.Show( myclass.AddNumbers( Int32.Parse(TextBox1.Text), Int32.Parse(TextBox2.Text).ToString(), "Αποτέλεσμα"); } Αρα δεν έχεις να κάνεις με databinding εδώ .. αλλά με απλή C# ή να στο πω και διαφορετικά, η ίδια φιλοσοφία ισχύει σε όλες τις γλώσσες ...
MauriDalia Δημοσ. 21 Μαΐου 2012 Μέλος Δημοσ. 21 Μαΐου 2012 Αυτό που ζητάς δεν έχει να κάνει με Databinding, αλλά με απλή διαδικασία ανάθεσης τιμών ... πχ ... έστω TextBox1 & TextBox2 & Button1 σε φόρμα Form1, και η παρακάτω κλάση: > public class MyClass { public MyClass() { } public int AddNumbers( int Num1, int Num2 ) { return (Num1 + Num2); } } οπότε στη Form1 θα έχεις: > private void Button1_Click(object sender, ... klp ) { MyClass myclass = new MyClass(); MessageBox.Show( myclass.AddNumbers( Int32.Parse(TextBox1.Text), Int32.Parse(TextBox2.Text).ToString(), "Αποτέλεσμα"); } Αρα δεν έχεις να κάνεις με databinding εδώ .. αλλά με απλή C# ή να στο πω και διαφορετικά, η ίδια φιλοσοφία ισχύει σε όλες τις γλώσσες ... Τον κώδικα της κλάσης που θέλω να δημιουργήσω τον γράφω στο αρχείο Form1.cs που χει δημιουργηθεί δηλαδή μαζί με το solution του project της φόρμας? Η κάνω add ένα ξεχωριστο αρχείο για την κλάση αυτή?
nspyrou Δημοσ. 21 Μαΐου 2012 Δημοσ. 21 Μαΐου 2012 Όχι, στο Form1.cs, θα γράψεις το αντίστοιχο κομμάτι > private void Button1_Click(object sender, ... klp ) { MyClass myclass = new MyClass(); MessageBox.Show( myclass.AddNumbers( Int32.Parse(TextBox1.Text), Int32.Parse(TextBox2.Text).ToString(), "Αποτέλεσμα"); } και θα προσθέσεις μια νέα κλάση στο project, που θα την ονομάσεις MyClass (βάσει του κώδικα που σου έδωσα παραπάνω), όπου θα προσθέσεις την εξής μέθοδο μέσα στην κλάση: > public int AddNumbers( int Num1, int Num2 ) { return (Num1 + Num2); } Αν βάλεις το Button στη φόρμα, πάτα διπλό κλίκ ώστε να σου δημιουργήσει τον χειριστή συμβάντος του button... μετά θα χρειαστείς μόνο αυτό: > MyClass myclass = new MyClass(); MessageBox.Show( myclass.AddNumbers( Int32.Parse(TextBox1.Text), Int32.Parse(TextBox2.Text).ToString(), "Αποτέλεσμα");
MauriDalia Δημοσ. 22 Μαΐου 2012 Μέλος Δημοσ. 22 Μαΐου 2012 Προσπάθησα και έφτιαξα την κλάση ώς εξής: > class MyClass { public int numAn; public int numBn; public MyClass() { } public int NumAn { get { return numAn;} set { numAn = value; } } public int NumBn { get { return numBn;} set {numBn=value;} } public int AddNumbers( int numAn, int numBn) { int sum; return sum=NumAn+NumBn; } } και πατώντας διπλό κλίκ πανω στο button: > int c; private void button1_Click(object sender, EventArgs e) { MyClass myclass = new MyClass(); c= myclass.AddNumbers(Convert.ToInt32(textBox1.Text),Convert.ToInt32(textBox2.Text)); label1.Text = c.ToString(); } Δηλαδή θέλω το αποτέλεσμα να εμφανίζεται στην label που έχω προσθεσει στο πρόγραμμα. Αλλά δεν μου βγάζει σωστά το αποτέλεσμα..
nspyrou Δημοσ. 22 Μαΐου 2012 Δημοσ. 22 Μαΐου 2012 Πρώτον! Γιατί στην AddNumbers δεν επιστρέφεις το αποτέλεσμα απευθείας?! Κάνεις αυτό: > public int AddNumbers( int numAn, int numBn) { int sum; return sum=NumAn+NumBn; } ενώ θα έπρεπε να κάνεις αυτό (ΠΡΟΣΕΧΕ ΜΕ ΤΑ ΚΕΦΑΛΑΙΑ ΓΙΑΤΙ ΕΙΝΑΙ ΑΛΛΟ ΤΟ NumAn ΚΑΙ ΑΛΛΟ ΤΟ numAn): > public int AddNumbers( int numAn, int numBn) { return numAn+numBn; } πιο εύκολα θα μπορούσες να γράψεις την κλάση σου ως εξής: > class MyClass { public int numAn {get; set;} public int numBn {get; set;} public MyClass() { } public int AddNumbers( int numAn, int numBn) { return numAn+numBn; } } Αν και δεν καταλαβαίνω τί χρειάζεσαι τα properties numAn & numBn ... αλλά τεσπα ... Πατώντας το Button1 λες οτι κάνεις αυτό: > private void button1_Click(object sender, EventArgs e) { MyClass myclass = new MyClass(); c= myclass.AddNumbers(Convert.ToInt32(textBox1.Text),Convert.ToInt32(textBox2.Text)); label1.Text = c.ToString(); } γιατί?? Ενώ μπορείς να έχεις αυτό και να μην χρειάζεται να χτυπιέσαι με μεταβλητές εκτός του scope της ρουτίνας: > private void button1_Click(object sender, EventArgs e) { MyClass myclass = new MyClass(); label1.Text = myclass.AddNumbers(Convert.ToInt32(textBox1.Text),Convert.ToInt32(textBox2.Text)).ToString(); }
defacer Δημοσ. 22 Μαΐου 2012 Δημοσ. 22 Μαΐου 2012 Γνωρίζει κανείς πως θα συνδέσω τα πεδία μιας μια κλάσης(τις μεταβλητές μέλη της κλάσης) υλοποιημένης σε C#, με μια Windows Form? Για παράδειγμα έχω μια φόρμα και θέλω να υπολογίσω μια αριθμητική παράσταση χρησιμοποιώντας κάποιες μεταβλητές. Οι μεταβλητές που τις τιμές τις δίνω χρησιμοποιώντας textboxes στην φόρμα, είναι μέλη μιας κλάσης. Κοιτάζοντας είδα πως αυτό γίνετε με data binding..και πως πρέπει να κάνουμε Add new Source στην καρτέλα Data του Visual Studio. Αλλά δεν βλέπει την Βάση που φτιάχνω.. Ξεκίνησες να διαβάζεις από εδώ; Και πιο συγκεκριμένα, δες εδώ που λέει step by step πώς γίνεται αυτό που θέλεις. Με την ευκαιρία: κάνεις που κάνεις προγραμματισμό, μην το αντιμετωπίζεις σαν καμιά κομμώτρια*. "Δεν μου βγάζει σωστά το αποτέλεσμα" δεν σημαίνει απολύτως τίποτα. Γίνε πιο συγκεκριμένος. *Αγαπητές κομμώτριες: δεν έχω τίποτα μαζί σας. Η αναφορά αυτή έγινε στα πλαίσια στερεοτυποχαβαλεδοκατάστασης. Αν κάποια στιγμή θέλετε να αστειευτείτε περι geeks, μπορείτε ελεύθερα να χρησιμοποιήσετε το στερεότυπο του προγραμματιστή. Μετά θα σας χακέψουμε.
MauriDalia Δημοσ. 22 Μαΐου 2012 Μέλος Δημοσ. 22 Μαΐου 2012 Ξεκίνησες να διαβάζεις από εδώ; Και πιο συγκεκριμένα, δες εδώ που λέει step by step πώς γίνεται αυτό που θέλεις. Με την ευκαιρία: κάνεις που κάνεις προγραμματισμό, μην το αντιμετωπίζεις σαν καμιά κομμώτρια*. "Δεν μου βγάζει σωστά το αποτέλεσμα" δεν σημαίνει απολύτως τίποτα. Γίνε πιο συγκεκριμένος. *Αγαπητές κομμώτριες: δεν έχω τίποτα μαζί σας. Η αναφορά αυτή έγινε στα πλαίσια στερεοτυποχαβαλεδοκατάστασης. Αν κάποια στιγμή θέλετε να αστειευτείτε περι geeks, μπορείτε ελεύθερα να χρησιμοποιήσετε το στερεότυπο του προγραμματιστή. Μετά θα σας χακέψουμε. Γεια σου! Πιο συγκεκριμένος δεν μπορώ να γίνω,αλλά συγκεκριμένη. Σ'ευχαριστώ για τα links και τα σχόλια! Επίσης το ξέρω ότι δεν σημαίνει τίποτα το "Δεν μου βγάζει σωστό αποτέλεσμα" ! Αλλά δεν ήταν δύσκολο να καταλάβει κανείς τι εννοώ με βάση τα προηγούμενα posts! Οσον αφορά το σχόλιο με τις κομμώτριες..δεν χρειαζόταν πιστεύω Σας ευχαριστώ για τις απαντήσεις σας παιδιά!
defacer Δημοσ. 23 Μαΐου 2012 Δημοσ. 23 Μαΐου 2012 Γεια σου! Πιο συγκεκριμένος δεν μπορώ να γίνω,αλλά συγκεκριμένη. Σ'ευχαριστώ για τα links και τα σχόλια! Επίσης το ξέρω ότι δεν σημαίνει τίποτα το "Δεν μου βγάζει σωστό αποτέλεσμα" ! Αλλά δεν ήταν δύσκολο να καταλάβει κανείς τι εννοώ με βάση τα προηγούμενα posts! Με συγχωρείς λοιπόν τώρα που ξέρω ότι είσαι συγκεκριμένη. Για το τι εννοείς, έχε υπόψη ότι μπορεί καλή ώρα να δει το θέμα κάποιος που δε θα διαθέσει πάνω από 1-2 λεπτά χρόνο. Αν μέσα σ' αυτό το χρόνο καταλάβει ποιό είναι το πρόβλημα θα σε βοηθήσει, αν όχι τότε ατυχήσαμε. Στην προκειμένη βιαζόμουν και δεν διάβασα τον κώδικα προσεκτικά. Αν έλεγες "μου βγάζει μηδέν" πιθανώς να είχα βοηθήσει περισσότερο. Οσον αφορά το σχόλιο με τις κομμώτριες..δεν χρειαζόταν πιστεύω Μας την είπαν με το γάντι...
MitsakosGR Δημοσ. 23 Μαΐου 2012 Δημοσ. 23 Μαΐου 2012 (ΠΡΟΣΕΧΕ ΜΕ ΤΑ ΚΕΦΑΛΑΙΑ ΓΙΑΤΙ ΕΙΝΑΙ ΑΛΛΟ ΤΟ NumAn ΚΑΙ ΑΛΛΟ ΤΟ numAn) Ναι μεν είναι άλλα πράγματα αλλά δεδομένου ότι έχει φτιάξει τα Properties NumAn και NumBn μπορεί να τα χρησιμοποιήσει απευθείας μέσα στην κλάση (άσχετα που μέσα στην κλάση συνήθως χρησιμοποιούμε απευθείας τις μεταβλητές). Απλά το αναφέρω ότι δεν είναι λάθος και αυτό. > class MyClass { public int numAn; public int numBn; public MyClass() { } public int NumAn { get { return numAn;} set { numAn = value; } } public int NumBn { get { return numBn;} set {numBn=value;} } public int AddNumbers( int numAn, int numBn) { int sum; return sum=NumAn+NumBn; } }
nspyrou Δημοσ. 23 Μαΐου 2012 Δημοσ. 23 Μαΐου 2012 Φίλε Δημήτρη (υποθέτω), φυσικά και είναι έτσι. Αλλά στη προκειμένη περίπτωση και σε αυτό που ήθελε να κάνει η φίλη του post, ήταν εκτός θέματος. Το γεγονός του οτι κράτησα την δήλωση των properties στην κλάση που της προτείνω, είναι γιατί ήθελα να της δώσω την αίσθηση του πως μπορείς να δηλώσεις τα properties. Άλλωστε σε κάποιο response μου, αναφέρω και το οτι δεν καταλαβαίνω τον λόγο ύπαρξής τους, καθώς περνάει παραμέτρους στην μέθοδο υπολογισμού του αθροίσματος. Ίσως σε κάποια πιο πολύπλοκη διαδικασία αυτό που προδιαθέτεις να ήταν καλή πρακτική, παρόλα ταύτα όμως, για την προκειμένη περίπτωση, είναι out of scope. Άλλωστε αν δεις την μέθοδο AddNumbers(), δεν λαμβάνονται υπόψιν οι τιμές των properties αλλά των παραμέτρων της μεθόδου.
MitsakosGR Δημοσ. 23 Μαΐου 2012 Δημοσ. 23 Μαΐου 2012 Συμφωνώ απόλυτα μαζί σου. Δεν έχει νόημα να αθροίζει τις παραμέτρους στις οποίες δεν έχουν ανατεθεί τιμές, τη στιγμή που θέλει να αθροίσει τα ορίσματα της συνάρτησης. Απλά ήθελα να αναφέρω ότι δεν είναι λάθος σαν σύνταξη, αλλά καθαρά και μόνο σαν λογική.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα