Tasarım-Zamanında UserControl’e bileşen eklemek
Visual Studio 2005’te System.Windows.Forms.UserControl‘den türettiğiniz bir sınıfı tasarımcıda formun üzerine sürükleyip bıraktığınızda görsel olarak bir sıkıntı yaşamıyorsunuz; ama iş bu bileşene bir başka bileşen eklemeye gelince sorunlar başlar.
Form üzerine bıraktığınız UserControl, kod ile bileşen eklemenize izin verirken malesef ki tasarım ekranında aynı esnekliği size sunmaz. Bu kötü haberdi; ama bu problemin üstesinde gelmemize yaracak başka yollar var
DotNet framework’ünün tasarım-zamanında bir bileşeni tasarlayabilmek için ihtiyaç duyduğu hizmetleri belirtmek için System.ComponentModel isim uzayında bulunan DesignerAttribute sınıfını kullanabilirsiniz. Yapmanız gereken, sınıf tanımından hemen önce DesignerAttribute’ü kullanarak framework’ün tasarım-zamanında ihtiyaç duyduğu tasarımcı sınıfının ve tasarımcı temel sınıfının adını belirtmek.
UserControl ile yaşadığımız sorunu çözmek için DesignerAttribute‘ü yardımıyla framework’e System.Windows.Forms.Design.ParentControlDesigner sınıfı ile System.Design sınıfını tasarım sınıfını olarak, IDesigner sınıfınıda tasarımcı temel sınıfı olarak belirtmeliyiz.
Bunların ardından kodumuz aşağıdaki gibi olacaktır :
using System.ComponentModel.Design; [Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] public partial class TasarlanabilirUserControl : UserControl { }
Projenizi derledikten sonra TasarlanabilirUserControl sınıfınızı bir formun üzerine bırakın ve üzerine araç kutusundan bir buton sürükleyip bırakın. Visual Studio 2005’in ürettiği koda dönüp baktığınızda biraz önce sürüklediğiniz butonun eskisi gibi form’a değil TasarlanabilirUserControl‘a eklendiğini göreceksiniz.