elenhpop Δημοσιεύτηκε Φεβρουάριος 26, 2013 #1 Κοινοποίηση Δημοσιεύτηκε Φεβρουάριος 26, 2013 Γράφοντας την πτυχιακή μου σε c# αντιμετώπισα ένα πρόβλημα και ψάχνω μια λύση. Χρησιμοποιώντας το visual studio πρόσθεσα στη φόρμα μου ένα εργαλείο το numericUpDown. Θέλω να το προγραμματίσω με τέτοιο τρόπο ώστε όταν ο χρήστης επιλέξει έναν αριθμό να εισάγει στη φόρμα textboxes. Που μπορώ να ψάξω ώστε να βρω την απάντηση ή αν γνωρίζει κάποιος ας με βοηθήσει. Ευχαριστώ Link to comment Share on other sites More sharing options...
Wizard! Φεβρουάριος 26, 2013 #2 Κοινοποίηση Φεβρουάριος 26, 2013 Επειδή γενικά τα dynamic controls είναι μανούρα, μπορείς να κάνεις το εξής:Αν έχεις κάποιο όριο σε controls (textboxes), τότε τα φτιάχνεις από πριν και τα έχεις invisible. Με την αλλαγή στο numericUpDown, απλά εμφανίζεις αυτά που θέλεις και μετά τραβάς τις τιμές τους.Αυτό βέβαια είναι πρακτικό αν έχεις 5-10 textboxes. Αν το θέλεις για παραπάνω, πχ 20-30, τότε θα το κάνεις διαφορετικά.Θα φτιάξεις μια function που επιστρέφει Textbox. Εκεί, θα δημιουργείς ένα με τις παραμέτρους που θέλεις, κυρίως διαφορετικό ID και θα το επιστρέφεις ως μεταβλητή. Απλά εδώ θέλει προσοχή στα πρόσθεσε/αφαίρεσε κλπ, για να έχεις την επιθυμητή συμπεριφορά. Link to comment Share on other sites More sharing options...
elenhpop Φεβρουάριος 26, 2013 Author #3 Κοινοποίηση Φεβρουάριος 26, 2013 ευχαριστώ πολύ Link to comment Share on other sites More sharing options...
nucleus Φεβρουάριος 26, 2013 #4 Κοινοποίηση Φεβρουάριος 26, 2013 Εναλλακτικά μπορείς να το κάνεις και έτσιΚάτω από το numericUpDown βάζεις ένα FlowLayoutPanel (δες το property FlowDirection).Μετά στο event ValueChanged του numericUpDown //πόσα textBoxes θέλω να βάλω?Όσα μου λέει η επιλεγμένη τιμή του NumericUpDown int numberOfTextBoxesToAdd = Convert.ToInt16(numberOfTextBoxesNumericUpDown.Value); //αδειάζω το FlowLayoutPanel από τα Controls που έχει textBoxFlowLayoutPanel.Controls.Clear(); //αναδρομή για την προσθήκη των TextBoxes for (int i = 1; i <= numberOfTextBoxesToAdd; i++) { //κάνω initialize ένα νέο textBox TextBox textBoxToAdd = new TextBox(); //βάζω ένα όνομα στο textBox που θα προσθέσω στην περίπτωση μας είναι της μορφής textBox1,textBox2 κτλ textBoxToAdd.Name = String.Format("textBox{0}",i); //το προσθέτω στο FlowLayoutPanel textBoxFlowLayoutPanel.Controls.Add(textBoxToAdd); } //αυτό ίσως και να μην χρειάζεται η Refresh αναγκάζει το control να κάνει redraw textBoxFlowLayoutPanel.Refresh();Αν θες να δεις ότι δουλεύει βάλε ενα button στην φόρμα κάτω από το FlowLayoutPanel και στο onclick event copy paste foreach (TextBox textBox in textBoxFlowLayoutPanel.Controls) { MessageBox.Show(String.Format("Name of TextBox = {0},Value = {1}", textBox.Name, textBox.Text)); }Για κάθε TextBox που περιέχεται στο collection των Controls του textBoxFlowLayoutPanel εκτύπωσε το όνομα του και το value που έχει.Σημείωση ο παραπάνω κώδικας θα χρειαστεί αλλαγή αν προσθέτεις άλλου τύπου controls στο FlowLayoutPanel Link to comment Share on other sites More sharing options...
elenhpop Φεβρουάριος 27, 2013 Author #5 Κοινοποίηση Φεβρουάριος 27, 2013 nucleus ευχαριστώ πολύ... Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.