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.

Şu Yazıları da Sevebilirsiniz

Leave a Comment

* Bu formu kullanarak, verilerinizin bu web sitesi tarafından saklanması ve kullanılmasını kabul ediyorsunuz.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul Et Daha Fazla Bilgi