
Merhaba, C# ile ilgimi çeken bazı kodları sizinle paylaşmak istiyorum. Sizlerinde ilginç örnekleriniz varsa benimle paylaşabilirsiniz. Bir tanesini http://www.csharpnedir.net/dotnettv/watch/?id=10&title=Windows%20Kontrolü%20Oluşturmak adresinden öğrendim. Sayın Oğuz Yağmur'un 2007 yılında yayınladığı video'dan bakarak öğrendiğim bir çalışma bu. Ben video'yu izleyerek yaptım, size de izlemenizi tavsiye ederim.
İşte tarifi :)
1. VS açın. Proje tipi olarak Windows Control Library'i seçin. Projenizi açın.
2. Açılan projedeki UserControl1.cs dosyasını silin.
3. Projenize Yeni bir "CustomControl1.cs" ekleyin (Add - New Items)
4. CustomCotrol'e isim verin. Ben renkliButon dedim.
5. Kod penceresinde aşağıdaki satırı bulun ve bir alttaki haliyle değiştirin.
public partial class CustomControl1 : Control // Control'ü silin
public partial class CustomControl1 : Button // onun yerine Button yazın
6. Kontrolümüze 4 adet public property ve bunların herbiri için private member'lar atayacağız. Aşağıdaki gibi:
// c1, c2, Saydam1 ve Saydam2 private
Color c1;
Color c2;
int Saydam1=64;
int Saydam2=64;
public Color Color1
{
get
{
return c1;
}
set
{
c1 = value;
Invalidate();
}
}
public Color Color2
{
get
{
return c2;
}
set
{
c2 = value;
Invalidate();
}
}
public int Saydamlik1
{
get
{
return Saydam1;
}
set
{
Saydam1 = value;
Invalidate();
}
}
public int Saydamlik2
{
get
{
return Saydam2;
}
set
{
Saydam2 = value;
Invalidate();
}
}
7. Şimdi de zaten var olan OnPaint() metoduna ilaveler yapacağız. Aşağıdaki gibi:
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
Color renk1 = Color.FromArgb(Saydam1, c1);
Color renk2 = Color.FromArgb(Saydam2, c2);
Brush LinBrush = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, c1, c2, 235);
pe.Graphics.FillRectangle(LinBrush, ClientRectangle);
LinBrush.Dispose();
}
8. Tamamdır. Projenizi Build edin. Bin\Debug\ klasörünün altında renkliButon.dll'i görmeniz gerekiyor.
9. Bu kontrolü kullanmak için Başk abir C# projesinde önce Toolbox'ınıza ekleyin, sonra butonu form üzerine ekleyin. Color1 ve Color2 property'lerini değiştirerek sonucu görebilirsiniz.
Halil Ersoy