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

 

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

Τι πρόβλημα υπάρχει με τον παρακάτω κώδικα

Îåêßíçóå áðü ôï ìÝëïò epp1123. Τελευταία δημοσίευση από το μέλος darklynx στις 15-06-2009, 21:19. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  13-06-2009, 23:22 51636

    Τι πρόβλημα υπάρχει με τον παρακάτω κώδικα

    Μπορεί κάποιος να μου πει τι λάθος υπάρχει στον παρακάτω κώδικα. Εννοείται ότι πιο ψηλά υπάρχουν τα using.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    namespace KostasNameSpace
    
    {
    public class KostasButton : Button { public KostasButton() { this.BackColor = Color.Red; this.ForeColor = Color.Black; this.Text = "Hello, this is button calling"; } }
    Το πρόβλημα είναι ότι το ForeColor αλλάζει, αλλά το BackColor, εμφανίζεται για μια στιγμή όταν αφήνω το control στη φόρμα, αλλά μετά γίνεται πάλι γκρι. Αν θέσω το VisualStyle κάτι property ως false τότε βλέπω το κόκκινο background. Επίσης αν μέσα στον constructor θέσω το visual style κάτι property ως false δε το παίρνει, είναι σα να μη το έκανα ποτέ.

    Επίσης ούτε το Text αλλάζει.
  •  14-06-2009, 14:12 51647 σε απάντηση της 51636

    Απ: Τι πρόβλημα υπάρχει με τον παρακάτω κώδικα

    Αναφέρεσε στην ιδιότητα UseVisualStyleBackColor η οποία εφαρμόζει styles στο control σου,με αποτέλεσμα να επηρεάζεται το background color του control σου ώστε να εναρμονίζεται με το style της φόρμας σου(δες εδώ για κάποιες γενικές πληροφορίες).Το να το θέσεις ως false είναι μια λογική λύση.Όσο για το text,κοίταξες το αρχείο .designer.cs της φόρμας σου;Είναι πιθανό να έχει αλλάξει η τιμή του εκεί πέρα και φυσικά αφού αυτή η αλλαγή γίνεται μετά την κλήση της constructor είναι και η τελική.
  •  14-06-2009, 23:14 51653 σε απάντηση της 51647

    Απ: Τι πρόβλημα υπάρχει με τον παρακάτω κώδικα

    Γενικά έψαξα και βρήκα και άλλες πληροφορίες για το θέμα και όντως μετά το instantiation βάζει τις τελικές τιμές. Anyway, γενικά τις απαντήσεις μου τις πήρα. Ευχαριστώ
  •  15-06-2009, 16:14 51693 σε απάντηση της 51653

    Απ: Τι πρόβλημα υπάρχει με τον παρακάτω κώδικα

    Όλα τα control παίρνουν τις τιμές τους μετά το instantiation, απλά γιατί δεν γίνεται διαφορετικά. Πρέπει πρώτα να υπάρχει το control για να μπορέσεις να του δώσεις τιμή.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-06-2009, 19:39 51702 σε απάντηση της 51693

    Απ: Τι πρόβλημα υπάρχει με τον παρακάτω κώδικα

    Και αν θες να δώσεις κάποιες αρχικές τιμές σε κάποια properties τι γίνεται;
  •  15-06-2009, 21:19 51704 σε απάντηση της 51693

    Απ: Τι πρόβλημα υπάρχει με τον παρακάτω κώδικα

    Παναγιώτης Καναβός:
    Όλα τα control παίρνουν τις τιμές τους μετά το instantiation, απλά γιατί δεν γίνεται διαφορετικά. Πρέπει πρώτα να υπάρχει το control για να μπορέσεις να του δώσεις τιμή.


    Αυτό είναι σωστό,μόνο που εδώ χρησιμοποιούμε inherited κλάση.Με άλλα λόγια πρώτα θα κληθεί ο constructor της Button και μετά ο constructor της KwstasButton.Επιπλέον πειράζουμε τα properties της Button κλάσης και όχι της KwstasButton.Άρα είναι δόκιμο να αλλάξεις properties στην constructor αρκεί να αφορούν την μητρική σου κλάση και όχι τη θυγατρική.Αυτό φαίνεται εύκολα και με πειραματισμό.
    Ο λόγος που δεν φάνηκαν αυτές οι αλλαγές στην περίπτωση αυτή είναι αφενός μεν ότι το style της φόρμας άλλαξε το background color του κουμπιού για να εναρμονίζεται σε αυτό  και αφετέρου ο form designer άλλαξε την τιμή του text στο .designer.cs αρχείο της φόρμας,αφού είναι φτιαγμένος ώστε να δίνει default τιμές στο text κάθε control.Σβήσε αυτήν την τιμή από το εν λόγω αρχείο,άλλαξε το property που είπαμε και θα φανούν οι αρχικές τιμές που έθεσες κανονικά.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems