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.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir