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

 

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

Προσθήκη ενός Custom property στο Properties Panel

Îåêßíçóå áðü ôï ìÝëïò pontifikas. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 25-05-2007, 00:00. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-05-2007, 22:39 32205

    Προσθήκη ενός Custom property στο Properties Panel

    Ας υποθέσουμε ότι έχω φτοιάξει ένα δικό μου Control και του έχω προσθέσει ένα property που το ονόμασα Text .
    Αυτό, όταν θα πάω σε μια φόρμα να προσθέσω το Control μου, δεν θα φαίνεται στο properties panel. Πώς μπορώ
    να το κάνω να φανεί?
    ε?Geeked

    Ευχαριστώ
  •  24-05-2007, 22:55 32206 σε απάντηση της 32205

    Απ: Προσθήκη ενός Custom property στο Properties Panel

    Η κλάση Control ήδη έχει το Text property. Προσθέτωντας ένα ακόμα Text property ουσιαστικά έκρυψες το Control.Text. Αν θέλεις να προσθέσεις το δικό σου κώδικα στο Text property, θα πρέπει να το κάνεις override φροντίζοντας όμως μέσα στις get, set να χρησιμοποιήσεις την base.Text και όχι κάποιο δικό σου πεδίο. Ο λόγος είναι ότι όταν τροποποιείς το Text property, σηκώνεται και το TextChanged event. Αν διαβάσεις το documentation του Control.Text property, θα δεις στα Remarks μία παράγραφο "Note to Inheritors" η οποία λέει ακριβώς αυτά.

    Γενικά, οποιοδήποτε property προσθέτεις εμφανίζεται στον Property Editor. Μπορείς να επηρεάσεις τον τρόπο που εμφανίζονται τα properties με attributes όπως τα DefaultValue, Category, EditorBrowsable, Designer, DesignTimeVisible κλπ.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  24-05-2007, 23:03 32207 σε απάντηση της 32206

    Απ: Προσθήκη ενός Custom property στο Properties Panel

    Κάνω inherit την UserControl που δεν έχει Text property και όχι την Control.
    Αλλά συμβαίνει το εξής. Πράγματι όπως είπες ότι property βάζω προστίθεται στο panel. Το Text όμως όχι.... Γιατί?
  •  24-05-2007, 23:13 32209 σε απάντηση της 32207

    Απ: Προσθήκη ενός Custom property στο Properties Panel

    Το UserControl είναι και αυτό Control. Στο documentation θα δεις ότι κάνει inherit το TemplateControl το οποίο κάνει inherit ... το Control. Προσθέτωντας το δικό σου Text property έκρυψες το ήδη υπάρχον Text property.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  24-05-2007, 23:22 32210 σε απάντηση της 32209

    Απ: Προσθήκη ενός Custom property στο Properties Panel

    Βασικά το ερώτημά μου ήταν γιατί ακόμα και δεν προσθέσω τίποτα, το Text δεν φαίνεται?
  •  25-05-2007, 00:00 32212 σε απάντηση της 32210

    Απ: Προσθήκη ενός Custom property στο Properties Panel

    Θα πρέπει στο property του control σου να βάλεις τα Browsable και DesignerSerializationVisibility attributes, όπως στο παρακάτω παράδειγμα. Το πρώτο attribute εμφανίζει το property στον Property Editor. Το δεύτερο λέει ότι η τιμή του property θα πρέπει να αποθηκευτεί στο .designer.cs αρχείο της κάθε φόρμας. 

    [Browsable(true)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    public override string Text
    {
       get
       {
          return base.Text;
       }
       set
       {
          base.Text = value;
          this.label1.Text = value;
       }
    }


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems