Makale Özeti

Merhaba arkadaşlar, bu makalemizde diğer web geliştirme editörlerinde olan ama .net toolbox’da olmayan bir web controlünün nasıl geliştirildiğine bakacağız.

Makale

ASP.NET Custom Control Geliştirme – Marquee Kontrolü

Visual Studio da kullanılabilir kontol sayısı çok fazla olsada bazı durumlar da visual studio toolbox’ında yer almayan bir kontrol gerekebilir. Bu durum da geriye 2 seçenek kalır. Ya dışarıdan 3th party bir component satın almalıyız. Yâda kendi kontrolümüzü kendimiz geliştirmeliyiz. Dışarıdan satın almak hem maliyetli bir iştir hemde alacağımız kontol bizim işimizi tam olarak görmeyebilir. Ayrıca geliştirmek istediğimizde yine ücret ödememiz gerekebilir. Buda hem biz yazılımcıların hemde firmaların işine gelmez. Bu durumu çözmek için kendi kontrolümüzü kendimiz geliştirebiliriz. Visual studio ile kendi kontrolümüzü geliştirip istediğimiz gibi kullanabiliriz istediğimiz gibi geliştirebiliriz.

Kendi kontrollerimizi geliştirebilmemiz için visual studio WebControlLibrary’yi sundu(Aynı işlemleri Class Library ile de yapabiliriz). Şimdi ilk olarak WebControlLibrary’de bize lazım olacak metodları tanıyalım.

Render Methodu

Oluşturacağımız Custom kontrolü çalıştırdığımızda tüm işlemler render metodunda gerçekleşecektir. Render metodu Web Browser’da kontrolleri görüntülemek için HTML olarak output edecektir. Otomatik olarak sayfayı Host eden sayfayı HtmlTextWriter ile HTML’e çevirecektir. Aynı Clasik ASP de olan Response.write gibi…

Design-Time Desteği

Oluşturacağımız nesneye ait özellikleri belirleyeceğimiz kısımdır. Kontrol’e design-time özelliği eklemek için property’ler ve class’lar tanımlanır codun içine dahil edilir.

[Category("ÖzellikAdi"),
DefaultValue(""),
Description("Açıklama")]


Attributes

Category
Appearance
Behavior
Data

Description
Belirlenecek olan property ile ilgili açıklama.

DefaultValue
Kendi değerimiz…

Browsable
Property’nin property box içinde gösterilip gösterilmeyeceğine karar verir. Alacağı değerler…  true  yada false


Kontrolü kullanmak

Oluşturacağımız kontrolü oluşturmak için WebControlLibrary’i Build ettikten sonra oluşacak olan dll’i kendi toolbox’ mızda sağ tıklayarak Choose Items seçeneğini seçerek ekleyebiliriz.

Örnek: Ben örnek olarak Visual Studio içerisinde yer almayan ama web sayfalarında çok işe yarayan Marquee(kayan yazı) kontrolünü geliştireceğim. İlk olarak yukarıda da anlattığım gibi WebControlLibrary oluşturalım.



Projemizi oluşturduktan sonra Kodumuzu inceleyelim.

namespace CustomControl

{

[DefaultProperty("Text")]

[ToolboxData("< {0}:WebCustomControl1 runat=server>")] // Kontrolümüzün Sayfaya eklendiğinde belirlenecek olan ID’si

public class WebCustomControl1 : WebControl

{

[Bindable(true)]

[Category("Appearance")] //propertyleri

[DefaultValue("")]

[Localizable(true)]



public string Text

{

get

{

String s = (String)ViewState["Text"];

return ((s == null) ? String.Empty : s);

}


set

{

ViewState["Text"] = value;

}

}



protected override void RenderContents (HtmlTextWriter output)//Kontrolümüzün output edileceği render metodu…

{

output.Write(Text);

}

}

}

Şimdi projemize devam edelim. İlk olarak Kontrolümüzün adını SemMarquee yapalım.

namespace Marquee

{

[DefaultProperty("Text")]

[ToolboxData("<{0}:SemMarquee runat=server>")]

public class SemMarquee : WebControl

{

Propertieslerimiz için açıklamayı yapalım.

[Category ("Appearance")]

[Browsable(true)]

[Description("Kayan Yazı içeriği")]

[Editor(typeof (System.Web.UI.Design.TextControlDesigner), typeof(System.Drawing.Design.UITypeEditor))]


Şimdi property penceremize eklemek istediğimiz özellikleri yazalım


string _text;

string _width;

string _height;



public string MarqueeText //marque içerisinde kaydırılacak olan yazı resim vs..

{

get { return _text; }

set { _text = value; }

}



public string MarqueeWidth //marwuenin genişliği

{

get { return _width; }

set { _width = value; }

}



public string MarqueeHeight //marwuenin yüksekliği

{

get { return _height; }

set { _height = value; }

}

Şimdi render edilecek olan marquee’yi yazalım.



protected override void RenderContents(HtmlTextWriter writer)

{

try

{


catch

{

writer.RenderBeginTag(HtmlTextWriterTag.Div);

writer.Write("Kayan Yazı");

writer.RenderEndTag();

}

}



}

}

Evet, Kontrolümüzü oluşturduk Şimdi bunu bir web site içerisinde kullanalım. Bunun için var olan projemize bir web site ekleyelim.



Şimdi eklediğimiz web site’in referanslarına gelip oluştuğumuz class library’i ekleyelim.



Şimdi toolbox’ımıza göz atalım…



Marquee controlümüz toolbox’a eklendi. Şimdi bunu formumuza ekleyelim ve özelliklerini belirleyelim.



Şimdi projemizi çalıştıralım…



Biraz bekleyelim tekrar bakalım;



Evet çok güzel oldu gerçekten. Artık bizimde bir Custom Web controlümüz var…

Bu makalemizinde de sonuna geldik. Teşekkür eder iyi çalışmalar dilerim.

Sem GÖKSU
MCP | MCAD.NET | MCTS | ASP.NET MVP

Örnek Kodlar için mail adresimi kullanabilirsiniz
semgoksu@semgoksu.com

Kaynaklar

www.codeproject.com