Βασικά, ο προτιμώμενος τρόπος είναι να ΜΗΝ γίνουν expose, αλλά να γραφτούν properties στο ίδιο το UserControl τα οποία θα τροποποιούν τα controls που περιέχει. Οι λόγοι είναι πολλοί:
- Έτσι προστατεύεις τις φόρμες που χρησιμοποιούν το User Control από τις αλλαγές που θα κάνεις στο εσωτερικό. Διαφορετικά, κάθε φορά που αλλάζεις το όνομα ενός control, ή αν π.χ. αντικαταστήσεις ένα control με ένα άλλο, θα πρέπει να τροποποιήσεις όλες τις φόρμες που το χρησιμοποιούν.
- Παρέχεις ένα απλό API στους χρήστες του User Control το οποίο περιέχει μόνο τα πράγματα που τους ενδιαφέρουν. Για παράδειγμα, μπορεί να τους ενδιαφέρει να υπάρχει ένα κοινό BackgroundColor για όλα τα controls, δεν τους ενδιαφέρει όμως το πλάτος όλων των control μέσα στο UserControl.
- Μπορείς να βάλεις τους δικούς σου ελέγχους για να αποφύγεις ανεπιθύμητες τιμές, π.χ. να απαγορέψεις τιμές εκτός ορίων.
- Προστατεύεις το control σου από επικίνδυνες αλλαγές, πχ. τροποποίηση του DataSource property ενός control κατά λάθος.
- Τέλος, μπορείς να φτιάξεις ένα UserControl property για να ελέγξεις πολλά controls, π.χ. να θέτεις από ένα BackgroundColor property τα background color properties όλων των control μέσα στο UserControl
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos