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

 

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

Custom controls & Inherit

Îåêßíçóå áðü ôï ìÝëïò γιωργος μπακογιαννης. Τελευταία δημοσίευση από το μέλος γιωργος μπακογιαννης στις 15-02-2006, 11:26. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-02-2006, 20:54 9675

    Indifferent [:|] Custom controls & Inherit

    Να κάνω μία ερώτηση όπως την βρήκα στα Αγγλικά; (ρητορικό το ερώτημα)

    In Visual Studio 2005, the controls appear as read-only on inherited forms.
    Is there a way to make them editable and use visual inheritance as in the previous versions of Visual Studio?

    Ξέρει κανείς το γιατί;

     

     

    Ευχαριστώ

     

    Υ.Γ.

    Μην ξεχάσω, η απάντηση είναι για δυνατούς παίχτες! (Παντός εγώ δεν την έχω!)


    while (!dead) learn();
  •  14-02-2006, 22:07 9677 σε απάντηση της 9675

    Απ: Custom controls & Inherit

    Το πρόβλημα αυτό δεν αφορά όλα τα controls αλλά μόνο όσα περιέχουν collections (πχ ToolStrip, MenuStrip, ContextMenuStrip, StatusStrip, TableLayoutPanel, FlowLayoutPanel, DataGridView, BindingNavigator, ListView). Αν φτιάξεις μια inherited form με ένα button, μπορείς να το πειράξεις κανονικά... Επίσης, μπορείς να πειράξεις τα inherited controls μέσω κώδικα, χωρίς πρόβλημα, εφόσον το access modifier το επιτρέπει.

    Ο λόγος που συμβαίνει αυτό, απ'ότι είχα διαβάσει στα blogs, είναι ότι η σωστή υποστήριξη visual inheritance σε controls με collections είναι πολύ δύσκολη και αποτελεί πηγή bugs. Γι αυτό λοιπόν την αφαίρεσαν και είπαν ότι θα την προσθέσουν σε επόμενες εκδόσεις. (Πονάει χέρι, κόψει χέρι Smile [:)]) Μάλλον δεν προλάβαιναν μέχρι το release να τα έχουν διορθώσει. Μπορείτε να βρείτε αρκετές αναφορές σε αυτό το ...feature στο Product Feedback Center (εδώ κι εδώ)


    Vir prudens non contra ventum mingit
  •  15-02-2006, 09:51 9693 σε απάντηση της 9677

    Απ: Custom controls & Inherit

    Σε ευχαριστώ για γρήγορη απάντηση σου.

    Αλλά τα inherited controls με ένα και μόνο button πάλι δεν λειτουργεί.
    Δηλαδή εάν αλλάξω στο button το Text, μόλις κάνω Build το διαγράφει.

    while (!dead) learn();
  •  15-02-2006, 10:02 9695 σε απάντηση της 9693

    Απ: Custom controls & Inherit

    Περίεργο, εμένα δεν το κάνει... Κάτι άλλο θα συμβαίνει... Τι modifier έχεις βάλει για το button?


    Vir prudens non contra ventum mingit
  •  15-02-2006, 10:11 9696 σε απάντηση της 9693

    Απ: Custom controls & Inherit

    Public
    while (!dead) learn();
  •  15-02-2006, 10:15 9697 σε απάντηση της 9675

    Απ: Custom controls & Inherit

    Ωχ ωχ ωχ... είναι ένα ηλίθιο (μα πραγματικά ηλίθιο) bug, το οποίο επιμένει να αγνοεί τις αλλαγές που τυχόν έχεις κάνει, και που δυστυχώς ΔΕΝ ξέρω που οφείλεται.

    Στη δική μου περίπτωση, έχω μια φόρμα η οποία κάνει inherit μία άλλη. Η base έχει ύψος X. Ε λοιπόν, η inherited επιμένει να αλλάζει συνεχώς το ύψος της αν τολμήσω να κάνω build και είναι το design view της ενεργό.

    Έχω σβήσει από τον κώδικα που κάνει resize και τα rersource files οποιαδήποτε αναφορά στο ύψος (ώστε να κληρονομεί αυτόματα το ύψος της base), αλλά τίποτα. Το ύψος αλλάζει (και μάλιστα, παίρνει και συγκεκριμένο νούμερο).
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  15-02-2006, 10:17 9698 σε απάντηση της 9695

    Απ: Custom controls & Inherit

    Συνημμένα: KENIXandInherits.zip

    Παραθέτω το Project


    while (!dead) learn();
  •  15-02-2006, 10:30 9699 σε απάντηση της 9698

    Απ: Custom controls & Inherit

    Δεν βρίσκω πρόβλημα... Αν δε σου κάνει κόπο, μπορείς να γράψεις τα βήματα για να γίνει reproduce το πρόβλημα, για να βεβαιωθούμε ότι κάνουμε και λέμε το ίδιο πράγμα;

    Ας υποθέσουμε ότι είναι ανοιχτό το project με όλες τις φόρμες κλειστές.


    Vir prudens non contra ventum mingit
  •  15-02-2006, 10:36 9700 σε απάντηση της 9698

    Απ: Custom controls & Inherit

    Ανοίγω τη Form1 αλλάζω τη τιμή Text μέσω ButtonUserControl1 > Misc > Button1 > Text, κάνω Build και η τιμή γίνεται ίδια με την τιμή στο «ButtonUserControl.vb»
    while (!dead) learn();
  •  15-02-2006, 11:12 9703 σε απάντηση της 9700

    Απ: Custom controls & Inherit

    Ωραία, τώρα το είδα... (Sorry, εγώ δοκίμαζα άλλο πράγμα)

    Ναι, και αυτό είναι απόρροια του νέου τρόπου που δουλέυει ο designer ως προς το visual inheritance.

    Λοιπόν, κοίτα τι γίνεται, έχεις δύο λύσεις:

    1) Θα πρέπει να φτιάξεις αντίστοιχα properties στο UserControl που θα κάνουν propagate τα properties προς τα intrinsic controls. Δηλαδή στον κώδικα του UserControl να προσθέσεις

        Public Property Button1Text() As String
            Get
                Return Me.Button1.Text
            End Get
            Set(ByVal value As String)
                Me.Button1.Text = value
            End Set
        End Property

    2) Να βάλεις τον κώδικα που θές να εκτελείται πχ UserControl1.Button1.Text = "Test" στον constructor της φόρμας

    Αν βάλεις να φαίνονται τα κρυφά αρχεία, θα δεις ότι οι αλλαγές που κάνεις στο user control δεν περνάνε στο InitializeComponent sub ως κώδικας παρά μόνο αν είναι properties του UserControl


    Vir prudens non contra ventum mingit
  •  15-02-2006, 11:26 9707 σε απάντηση της 9700

    Απ: Custom controls & Inherit

    Και τα δύο έχουν τώρα το έξης πρόβλημα:
    Όταν τα κάνεις drop στην φόρμα, ο Designer γράφει αυτές τις αλλαγές μέσα στην φόρμα.
    Όλα μέχρι εδώ είναι ωραία.
    Άλλα εάν το βάλεις αυτό το control σε πολλές φόρμες και θες να αλλάξεις κάτι στο control δεν θα κληρονομηθεί σε όλες τις φόρμες του το έχεις βάλει.

    Συγνώμη εάν γίνομε κουραστικός

    while (!dead) learn();
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems