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

 

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

Custom controls & Custom events

Îåêßíçóå áðü ôï ìÝëïò m6s. Τελευταία δημοσίευση από το μέλος m6s στις 13-12-2007, 00:18. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-12-2007, 16:23 38091

    Custom controls & Custom events

    Καλησπέρα, σε όλους...
    Δημιούργησα μια πολύ απλή κλάσση που δημιουργεί ενα combobox.Βασισμένο στο ιδιο το System.Combobox, εμπλούτισα το εργαλειάκι με μια arraylist και ένα dictionary. Γιατί με αυτό το τροπό, προσπαθώ να μιμηθώ τα infragistics, να έχω το guid και το value για κάθε μια εγγραφή στο combobox που εισάγω. (Θυμηθείται ότι δεν μπορώ να εχω multicolumn combobox, και απο την αναζήτηση στο δίκτυο ο κώδικας είναι με το κιλό για να κάνω ενα multicolumn combobox...με απογοήτευσαι και ετσι το πήγα με αυτό το τρόπο.) Μέχρι εδώ, λειτουργεί τέλεια.
    Δημιουργώ το λεξικό, με τιμές Guid-string, το εισάγω σε μια αρρευλιστ, και την συνάπτω στο combobox.Big Smile

    Το θέμα τώρα είναι ότι προσπαθώ να πάρω την τιμή guid, που εχει που την πέρνω με ενα custom event στον κώδικα αυτής της κλάσσης.
    Αυτό που κάνει ειναι ότι βάση του index απο τον sender, εξάγει ποιο guid ειναι το αντίστοιχισμένο στην λίστα μου.
    Μέχρι έδω όλα καλά πάλι.

    Μέχρι το σημείο που στη φόρμα που έχω, και "ζωγραφίζω" πάνω της τα combobox, πηγαίνω στο combobox ( ας το πούμε dvcombobox) και του ορίζω εκεί πάλι ότι αν επιλέξω μια τιμή τρέξε πάλι ενα event.

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

    Το πρόβλημα είναι ότι το πρώτο event ενεργοποιείται μετά το δεύτερο!!!!! Και έχω πρόβλημα, Angryγιατί χωρίς το guid δεν μπορώ να τρέξω τον κώδικα στο δεύτερο event και τελος πάντων να πάρω δεδομένα απο την βάση....
    Ελεος!Crying Τι να κάνω ;

    Ευχαριστώ εκ των προτέρων για όποια συμβουλή...
  •  07-12-2007, 16:36 38092 σε απάντηση της 38091

    Απ: Custom controls & Custom events

    Ίσως αν έγραφες και των κώδικά σου με τρόπο τέτοιο που να μπορούμε να παρακολουθούμε τα βήματα που ακολουθούνται στην εφαρμογή σου να μπορούσε κάποιος να σου πει κάτι παραπάνω. Γιατί προς το παρόν δεν νομίζω να μπορεί κάποιος να σου πει με σιγουριά τι μπορεί να φταίει. 

  •  09-12-2007, 19:16 38131 σε απάντηση της 38092

    Απ: Custom controls & Custom events

    Ok Embarrassed απλά ήθελα να δώ αν θα έχει ανταπόκριση το post...

    1. Αυτός είναι ο κώδικας για το custom control :
    internal class DVComboBox : ComboBox {
            public ArrayList entries = null;
            public Dictionary<Guid, string> entryvalue = null;
            public DVComboBox()
                : base() {
            }

            public DVComboBox(DataTable DataSource, string DisplayMember, string ValueMember)
                : base() {
                this.DataSource = DataSource;
                this.DisplayMember = DisplayMember;
                this.ValueMember = ValueMember;
            }

            public void Init(DataTable DataSource, string DisplayMember, string ValueMember) {
                //this.DataSource = DataSource;
                //this.DisplayMember = DisplayMember;
                //this.ValueMember = ValueMember;
                entryvalue = new Dictionary<Guid,string>();
                entries = new ArrayList();

                foreach (DataRow row in DataSource.Rows){
                    if (DataSource.Columns.Contains("Level")) {
                        if (Convert.ToInt16(row["Level"]) <= Session.Level)
                            entryvalue.Add( new Guid(row[ValueMember].ToString()),row[DisplayMember].ToString() );
                    } else
                        entryvalue.Add(new Guid(row[ValueMember].ToString()), row[DisplayMember].ToString());
                }
                foreach (KeyValuePair<Guid, string> key in entryvalue) {
                    this.Items.Add(key.Value);
                    entries.Add(key);
                }
                this.SelectedIndexChanged += new System.EventHandler(this.cbo_SelectedIndexChanged);
                this.FlatStyle = FlatStyle.Standard;
            }

            private void cbo_SelectedIndexChanged(object sender, System.EventArgs e) {
                MessageBox.Show(this.entries[((DVComboBox)sender).SelectedIndex].ToString());
            }
    }

    2. Στο κύριο κομμάτι της εφαρμογής, καλώ ενα event :
    private void CategoryCbo_SelectedIndexChanged(object sender, EventArgs e) {
        MessageBox.Show("Event!");
    }
    ως απο το Form1.Designer αρχείο, αντιγράφω :
    DVComboBox ProductionCbo;
    this.ProductionCbo.SelectedIndexChanged += new System.EventHandler(this.ProductionCbo_SelectedIndexChanged);

    Δηλαδή, καλώ ένα event στο κύριο κομμάτι του κώδικα, και ενα event στο ίδιο το custom control.
    Το πρόβλημα είναι ότι πρώτα ερχεται το 2ο και μετά καλείται το 1ο...

    Είναι λίγο καλύτερα νομίζω τώρα Hmm
    Η ιδέα σε γενικές γραμμές, είναι ότι επιλέγωντας ένα στοιχείο, να παίρνω πιο item ήταν και ουσιαστικά με μια στήλη παραπάνω που είναι το level, να δείχνω ή να μην δείχνω την πληροφορία στον χρήστη.

    Ευχαριστώ, εκ των προτέρων για όποια ιδέα...
  •  11-12-2007, 00:19 38186 σε απάντηση της 38131

    Απ: Custom controls & Custom events

    Ενημερωτικά, μετέτρεψα σε ιδιότητα το γεγονός, για να πάω παραπέρα, αλλά πάντως δεν το βρίσκω καλή ιδέα.
    Ετσι σαν ιδιότητα πέρνω την τιμή και την πασάρω στο δεύτερο γεγονός. Βασικά...δεν μαρέσει. Huh?
  •  13-12-2007, 00:18 38298 σε απάντηση της 38186

    Απ: Custom controls & Custom events

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