Csharpkodlar
İÇERİKLER  
  Ana Sayfa
  İletişim
  C# Cümlede Harfin Kaç Defa Kullanıldığını Bulma
  İki tarih arasında for ile döngü kurmak. DateTime for function
  C# ta Kodların Kullanımı ve Örnek Kodlar
  C# Yıldızlar ile ters piramit yapmak
  C# Sayının asal olup olmadığını gösteren program
  C# Hesap Makinesi
  C# Burç Programı
  C# Sayısal Loto örnegi
  C# Textbox kısıtlamaları
  C# alarm örneği
  C# Faktoriyel hesaplama
  Klavyeden girilen 2 sayı arasında kalan sayıların toplamını ve karelerinin toplamını bulan kod
  MSSQL Bağlantısı, Sorgulama, Kayıt Ekleme , Kayıt Silme işlemleri
  Dizilerle öğrenci kayıt örneği C#
  Sinema Programı örnek C#
  Türkçe-İngilizce ve İngilizce-Türkçe Sözlük C#.NET
  Şampiyonluk Anketi (progressBar ile) C#.NET
  Büyük Ünlü Uyumu C#
  C# Maaş-Gelir Gider-Kişisel Bilgi Programı
C# ta Kodların Kullanımı ve Örnek Kodlar
 
C# Form Komutları
Aktif Formu Kapatmak için
this.close();                bulunduğu pencereyi kapatır.
Application.Exit();    programı kapatır.
İkinci Formu Açmak için
Form2 Yeni=new Form2();
 
Yeni.Show();//Formlar arasında geçiş yapılabilir.
İkinci Formu Açmak için 2. Yol
Form2 Yeni=new Form2();
 
Yeni.ShowDialog();//Formlar arasında geçiş yapılmaz
Aktif Formu Gizlemek için
this.Hide();
Başlangıç Formunu Değiştirmek için
Solution Explorer penceresindeki Program.cs'de bulunan Application.Run(new Form1()); kodundaki Form1'i değiştiriyoruz.
Başka bir formdan (X)'dan kapatmak için
 
protected override void OnFormClosed(FormClosedEventArgs e)
 {
    base.OnFormClosed(e);
    Application.Exit();
 }
 
 
TextBox'a sayı,karakter girme ve değişkene atama
int a;
a = Convert.Toint32(TextBox1.Text);
string b;
b = TextBox1.Text;
 
Veri Türleri
 
C# taki adı
CTS Karşılığı
Açıklama
Max ve Min aralık yada değeri
sbyte
System.Byte
8 bit işaretli tamsayı
-128 : 127
short
System.Int16
16 bit işaretli tamsayı
-32.768 : 32.767
int
System.Int32
32 bit işaretli tamsayı
-2.147.483.648 : 2.147.483.647
long
System.Int64
64 bit işaretli tamsayı
-9.223.372.036.854.775.808 : -9.223.372.036.854.775.807
byte
System.Byte
8 bit işaretsiz tamsayı
0 : 255
ushort
System.UInt16
16 bit işaretsiz tamsay
0 : 65.535
uint
System.UInt32
32 bit işaretsiz tamsayı
0 : 4.294.967.295
ulong
Sy
tem.UInt64
64 bit işaretsiz tamsayı
0 : 18.446.744.073.709.551.615
float
System.Single
32 bit tek kayan sayı
+yada - 1,5*10-45 : + ya da - 3,4*1038
double
S
tem.Double
64 bit çift kayan sayı
+yada - 5*10-324 : + ya da - 1,7*10308
decimal
System.Decimal
128 bit ondalıklı sayı
+yada - 1,5*10-28 : + ya da - 7,9*1028
bool
System.Boolean
true ya da false
char
System.Char
Karakterleri temsil eder
16 Unicode kar
kterleri
 
 
object
System.Object
Bütün veri türlerinin türediği kök eleman
string
System.String
Unicode karakterlerinden oluşan string
int a = 10 ; //değişken tanımlanırken bellekteki değer 10 olarak düzenleniyor.
int a=10, b;
b = 10 ; /*eğer bir satırda birden fazla değişeken tanımlaması yapmak istiyorsak bu yapıyı kulanırız.Bu durumda a ve b int türden değişkenlerdir denir.*/
sabitler:    const double pi = 3.14 ;
Operatörler
Aritmetik Operatörler:
Operatör
Açıklama
 Örnek
+
Ekleme
toplam = sayi1 + sayi2;
-
Çıkarma
fark = sayi1 - sayi2;
*
Çarpma
carpim = sayi1 * sayi2;
/
Bölme
bolum = sayi1 / sayi2;
%
Kalan veya modül
kalan = sayi1 % sayi2;
++
Birer Birer Arttırma
sayi1 = sayi1 + 1;
--
Birer Birer Eksiltme
sayi1 = sayi1 - 1;
 
 
 
 
Atama Operatörleri
Atama Operatörleri değişkenlere değer atamak için kullanılırlar.
Operatör
Açıklama
=
Basit eşitleme
+=
Sağdaki Sayı ile topla sonra toplamı eşitle
-=
Sağdaki Sayı yı çıkar sonra sonucu eşitle
*=
Sağdaki Sayı ile çarp sonra toplamı eşitle
/=
Sağdaki Sayı ile böl sonra bölümü eşitle
%=
Sağdaki Sayı ile bölümünden kalanı bul sonra kalanı eşitle
 
İlişkisel(Karşılaştırma) Operatörleri
Operatör
Açıklama
==
Eşittir
!=
Eşit Değildir
>
Büyüktür
<
Küçüktür
>=
Büyük Eşittir
<=
Küçük Eşittir
 
Mantıksal ve Bit Düzeyinde (Logical and Bitwise) Opeatörleri
Operatör
Açıklama
&
Bit bazında ve işlemi
|
Bit bazında or işlemi
^
Bit bazında xor işlemi
!
Bit bazında not işlemi
&&
Mantıksal ve işlemi
||
Mantıksal or işlemi
 
 
Check Box kontrolü
if   (checkBox1.Checked)
     MessageBox
.Show("Kontrol secili duruma gecti.");
else
     MessageBox.Show("Kontrol secimi kaldirildi.");
Benzer şekilde herhangi bir anda kodlarla seçim yapmak için :
                  checkBox1.Checked = true;
seçimi kaldırmak için ise :
                 checkBox1.Checked = false;
kodları kullanılabilir.
ComboBox kontrolü
Form üzerinde boş bir alana çift tıklatılarak aşağıdaki kodlar yardımı ile combobox kontrolüne iki seçenek eklenir.
comboBox1.Items.Add("Secenek 1");
comboBox1.Items.Add("Secenek 2");
string seçilen_değer = comboBox1.Items[comboBox1.SelectedIndex].ToString();
int seçilen_index = comboBox1.SelectedIndex;
 
eğer combobox'ın içeriği boşsa    ComboBox1.SelectedIndex   -1 değerini alır.
RadioButton kontrolü
radioButton1.Enabled = false;
radioButton1.Visible = false;
radioButton1.BackColor = Color.Blue;
radioButton1.ForeColor = Color.Red;
***********************************************************************
if (radioButton1.Checked == true) label2.Text = radioButton1.Text;
if (radioButton2.Checked == true) label2.Text = radioButton2.Text;
if (radioButton3.Checked == true) label2.Text = radioButton3.Text;
*****************************************************************
Boolean Değişken
Boolean operatörler sonucu doğru ya da yanlış olan hesaplamayı gerçekleştiren operatörlerdir.
 
 private void button1_Click(object sender, EventArgs e)
        {
            int s1, s2;
            bool k;
            s1=Convert.ToInt32(textBox1.Text);
            s2=Convert.ToInt32(textBox2.Text);
            k = (s1 > s2);
                              label3.Text = k.ToString();
                           } 
 
if komutu
*              if (koşul)
                 işlem
                else
                 işlem
 
*              if (koşul)
                {
                 işlemler
                }
                else
                {
                 işlemler
                }
 
switch…case İfadesi
switch (değişken)
{
case sabit değer : kod bloğu;
                                                break;
case sabit değer : kod bloğu;
                                                break;
default:
                kod bloğu;
                                               break;
}
 
 
Örnek;
string mesaj = "";
switch (ay)
{
   case "Mart":
   case "Nisan":
   case "Mayıs":
  mesaj = "İlkbahar";break;
 
   case "Haziran":
   case "Temmuz":
   case "Ağustos":
   mesaj = "Yaz";break;
 
   case "Eylül":
   case "Ekim":
   case "Kasım":
   mesaj = "Sonbahar";break;
 
   case "Aralık":
   case "Ocak":
   case "Şubat":
   mesaj = "Kış"; break;
 
   default:
    mesaj = "Lütfen bir ay ismi giriniz..";break;
}
 
for Döngüsü
 
for (başlangıç; koşul; artım / azalım)
{
 kod bloğu;
}
********************************************
for (int i = 0; i < 5; i++)
{
                komutlar;
}
 
 
0<5          1<5          2<5          3<5          4<5          5<5
Komutlar   Komutlar  Komutlar  Komutlar   Komutlar fordan çıkış
i++           i++           i++           i++           i++          
 
Döngümüzü belli bir koşul altında sonlandırmak istiyorsak break komutunu kullanırız.
for (int i = 0; i < 10; i++)
{
                if (i > 5)
                {
                 break;
                }
                komut;
}
Belli bir koşul altında döngü içine yazdığımız kodların çalışmayarak bir sonraki döngü adımına geçmek istiyorsak continue komutunu kullanırız.
for (int i = 0; i < 10; i++)
{
                if (i == 5)
                {
                 continue;
                }
                komut;
}
 
i değeri 5 olduğu zaman continue komutu çalışarak döngüyü bir sonraki adıma taşır, bunun sonucu komut kısmı çalışmaz.
 
 
do… while Döngüsü
Döngü içine yazılan kod ilk olarak çalışır daha sonra while kısmındaki koşul kontrol edilir, burada bulunan koşul true değer döndürdüğü sürece döngü tekrar tekrar çalışır.
do
{
// çalışacak kod
}
while(koşul);
*************************************
int i = 0;
do
{
 komutlar;
 i++;
}
while (i<10);
 
 
while Döngüsü
Hemen hemen do…while döngüsü ile aynı özellikleri taşır. Sadece ilk çalışma mantıkları farklıdır.
do…while döngüsü ilk olarak kod bloğuna girer daha sonra koşul kontrol edilir, böylece koşul doğru olsada olmasada kod bloğu bir kez çalışır.
while döngüsü ise kod bloğuna girmeden önce koşul durumunu kontrol eder, eğer koşul doğru değilse kod bloğu asla çalışmaz. Bu küçük ama çok önemli bir farktır.
while (koşul)
{
 //kod bloğu
}
 
burada koşul true olursa sonsuz döngüye girer.çıkmak için break; komutu kullanılır.
 
*************************************
while (sayac<10)
{
 komutlar;
 sayac++;
}
********************************************************
SINIFLAR (Class)
Sınıf bildirimi class anahtar kelimesi ile gerçekleştirilir. Sınıf isimden sonra sınıf içindeki üye eleman (nesne) ve metotlar bulunur.
 
Yeni bir sınıf tanımlanırken Project menüsünden add class seçeneği seçilir.
Kullanımı:
namespace arabalar
{
    class araba
    {
        erişim veri_tipi degişkeni // sınıf üyeleri
        erişim dönüş_değeri
        metot_ismi(varsa parametreleri yazılır)
    {
        // kodlar
    }
    }
}
*****************************************************
 
Constructor
Constructor, yani “Kurucu” herhangi bir sınıfın nesnesi oluşturulacağı esnada sınıf içerisinde, en başta çalışacak olan kod parçasıdır. Oluşturduğumuz sınıflarda yazılımcı olarak birer kurucu oluşturmak zorunda olmasak da, C#’ ın arka tarafta o sınıfı oluşturabilmek için kullanacağı bir kurucuya ihtiyacı vardır. Dolayısı ile, bizim adımıza boş bir kurucu oluşturur. Fakat biz bir kurucu oluşturduğumuz esnada, C# arka planda ikinci bir kurucuyu asla oluşturmaz (bizim oluşturduğumuz kurucuyu kullanır).
Sınıf oluşturulurken ilk çalışacak olan kısmın kurucu olduğunu göz önünde bulundurduğumuzda, belirli bir kod parçasının sınıf kurulduğu esnada çalışmasını istiyorsak, bu kod parçasını sınıf içinde bulunan constructor’un içerisine yazabiliriz.
NOT: Yapıcı metodların(kurucuların) özelliklerine gelince geriye değer döndürmez ve class(sınıf) ismiyle aynı isimde bulunurlar.
ÖRNEK;
*class ogrenci
{
    public int no;
    public String isim;
    public String soyisim;

    public ogrenci(int ogNo, String ogIsim, String ogSoyisim)
    {
       no=ogNo;
       isim=ogIsim;
       soyisim=ogSoyisim;
    }
}
* ogrenci og1 = new ogrenci(1,"mertcan","kurtaran");
ÖRNEK;
*class Hesapla
    int a;
    int b;
    public Hesapla(int x, int y)
    {
       a = x;
       b = y;
    }
       public int Sonuc()
       {
         return a + b;
       }
}
 
*Hesaplahesap = new Hesapla( 10, 18 );
int sonuc = hesap.Sonuc();
 
 
FONKSİYONLAR
* ToLower fonksiyonu
Metni küçük harfe çevirir.
label1.Text =textBox1.Text.ToLower();
 
* ToUpper fonksiyonu
Metni büyük harfe çevirir.
label1.Text =textBox1.Text.ToUpper();
 
* Length(uzunluk) fonksiyonu
 Metnin toplam karakter sayısını verir.
int boyut;
boyut = TextBox1.Text.Length;
 
 
 
* Substring fonksiyonu
metin.Substring(başlangıç,uzunluk)   --> metin içindeki karakterlerden; başlangıç değerinden başlayarak uzunluk kadar karakteri verir.
string adı = TextBox1.Text;
Label1.Text = adı.Substring(2, 3);
 
 
*biostan veri çekme fonksiyonu
DateTime.Now.Year;   = Yıl
DateTime.Now.Month;   = Ay [1-12]
DateTime.Now.Day;    = Gün [1-31]
DateTime.Now.DayOfWeek;   = Haftanın Adı [Tuesday]
DateTime.Now.DayOfYear;  = Yılın günü [1-365]
DateTime.Now.Hour;   = Saat
DateTime.Now.Minute;   = Dakika
DateTime.Now.Second;    = Saniye
textbox'a veri girişi
*private void txt_ogrencisoyadi_KeyPress(object sender, KeyPressEventArgs e)
        {
Q
 
       * private void txt_no_KeyPress(object sender, KeyPressEventArgs e)
        {
            switch (e.KeyChar) //sadece sayı girişine izin verir.
            {
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
                case '0':
                case 'b':
                    break;
                default:
                    e.Handled = true;
                    break;
            }
        }
 
Değişkeni global tanımlama(Her yerde geçerli olması)
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
     }
    public static class degiskenler
    {
        public static int a;
    }
 
}
DİZİLER
 
    Diziler bir çok değişkene aynı adla ulaşmayı sağlayan bir grup veri yapısıdır. Bir dizideki tüm öğeler aynı türdendir. Diziler 0,1,2,3....N biçiminde devam eden serilerden elde edilirler.
   
Tek boyutlu dizi tanımlama -->          veri_tipi[] dizi_ismi = new veri_tipi[dizinin_boyutu];
 
örnek:     int[] veri = new int[4];
 
 
       0               1               2               3 
Değer1
Değer2
Değer3
Değer4
 
veri[0] = 12;         Değer1'e 12 yüklenmiş olur.
veri[1] = 8;           Değer2'ye 8 yüklenmiş olur.
veri[2] = 150;       Değer3'e 150 yüklenmiş olur.
veri[3] = 79;         Değer4'e 79 yüklenmiş olur.
 
 
Diziye başlangıç değeri atama: 
 
int[] veri = new int[9] { 1, 2, 3, 4, 5, 6, 7, 8, 9  };
 
int[] veri = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
string[] personel_ismi = { "Sabri", "Metin", "Osman", "Ali" };
 
 
İki boyutlu dizi tanımlama -->         veri_tipi[,] dizi_ismi = new veri_tipi[satır_sayısı,sütun_sayısı];
örnek:     int[,] veriler = new int[2, 3];
 
     0                    1                   2
    0,0
      0,1
      0,2
    1,0
      1,1
      1,2
 
veriler [0, 0] = 23;
veriler [0, 1] = 25;
veriler [0, 2] = 33;
veriler [1, 0] = 41;
veriler [1, 1] = 29;
veriler [1, 2] = 93;
dizideki değerleri okuma
            for (int i = 0; i < veri.Length; i++)
            {
 
                listBox1.Items .Add (p[i]);
 
            }
 
iki boyutlu dizideki değerleri okuma
            for (int row = 0; row < veriler.GetLength(0); row++)
            {
 
                for (int col = 0; col < veriler.GetLength(1); col++)
                {
                    listBox1.Items.Add(veriler[row, col]);
                }
 
            }
 
 
 
 
dizi kopyalama int[] veri = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int[] ds = veri;
Koleksiyonlar
    Diziler aynı türdeki öğeleri bir araya getirmek için iyi bir yöntemdir. Ama tek yöntem değildir. Microsoft.Net Framework, öğeleri özel yollardan bir araya toplayan bir kaç sınıf sağlar. Bunlar koleksiyon sınıflarıdır. using System.Collections kütüphanesinin içinde yer alırlar.
    Temel koleksiyon sınıfları öğelerini nesne olarak tutar,alır ve döndürürler; yani, koleksiyon sınıfının öğe türü object'tir.
 
ArrayList Koleksiyon Sınıfı
Arraylist bir dizideki öğelerin sıralarını kaydırmak için yararlı bir sınıftır. Dizinin öğeleri sorunsuz bir şekilde silinip eklenebilir.
using System.Collections; // eklenir.
ArrayList ds = new ArrayList() { 12, 334, 47, 288, 96 };
 
örnek;
    private void button1_Click(object sender, EventArgs e)
        {
             ArrayList ds = new ArrayList();    
           
             ds.Add(12);
             ds.Add(45);
             ds.Add(6);
             ds.Add(369);
             ds.Add(78);
             label1.Text = ds.Count.ToString();
 
             for (int i = 0; i < ds.Count; i++)  listBox1 .Items .Add(ds[i]);
 
            //**************************************************************
             ds.Insert(3, 345); // dizinin 3. index'ine 345 değerini yükler.
             label2.Text = ds.Count.ToString();
 
             for (int i = 0; i < ds.Count; i++) listBox2.Items.Add(ds[i]);
 
             //**************************************************************
             ds.Remove(6); // dizinin içindeki 6 olan değerleri komple kaldırır.
             label3.Text = ds.Count.ToString();
 
             for (int i = 0; i < ds.Count; i++) listBox3.Items.Add(ds[i]);
 
             //**************************************************************
             ds.RemoveAt(2); // dizinin 2. index'ini komple kaldırır.
             label4.Text = ds.Count.ToString();
 
             for (int i = 0; i < ds.Count; i++) listBox4.Items.Add(ds[i]);
 
        }
 
Hashtable Koleksiyon Sınıfı
Bu sınıf iki nesne dizisi sunar. biri bağladığınız anahtarları diğeri de bağlamakta olduğunuz değerleri içerir. Bir Hashtable'a key(anahtar)/value(değer) çifti eklediğinizde,hangi anahtarın hangi değere ait olduğunu takip eder ve belirlenen anahtar ile ilişkilendirilmiş değeri hızlıca ve kolayca elde edebilmemizi sağlar.
using System.Collections; // eklenir.
Hashtable yas = new Hashtable() { { "cemil", 24 }, { "selim", 54 }, { "cem", 18 }, { "tarık", 47 } };
 
örnek;
       private void button1_Click(object sender, EventArgs e)
        {
 
            Hashtable yas = new Hashtable();
 
            yas["salih"] = 32;
            yas["ali"] = 11;
            yas["veli"] = 25;
            yas["kazım"] = 28;
            yas.Add("fırat",4); // fırat isminde ve 4 yaşında kişi ekler.
 
            label1.Text = yas.Count.ToString();
 
            foreach (DictionaryEntry element in yas)
            {
                string ad = (string)element.Key;
                int yasi = (int)element.Value;
                listBox1.Items.Add("Adı: " + ad + "Yaşı: " + yasi);
            }
         }
 
SortedList Koleksiyon Sınıfı
Hashtable'ın aynısıdır. Farkı anahtarları yani örnekteki adları sıraya dizerek listeler.
using System.Collections; // eklenir.
 
örnek; Hashtable örneğinin aynısı bir tek
Hashtable yas = new Hashtable(); yerine SortedList yas = new SortedList(); yazılıyor.
 
Dizi ve Koleksiyonlar arasındaki önemli farklar şunlardır.
·          Bir dizi, tuttuğu öğenin türünü tanımlarken bir koleksiyon bunu yapmaz. Bunun nedeni, koleksiyonların öğelerini nesne olarak tutmalarıdır.
·          Bir dizi oluşumunun boyutu sabittir ve ne büyüyebilir ne de küçülebilir. Bir koleksiyon gerektiğinde kendini dinamik olarak yeniden boyutlandırabilir.
·          Bir dizi çok boyutlu olabilir. Bir koleksiyon ise doğrusaldır.
   Foreach komutu
 
Dizilerin 0. index'den başladığı son index'in Length-1 olduğu yeni başlayan programcılar tarafından genellikle unutulur. C#, bu konuyu düşünmeden dizinin öğeleri(indexleri) üzerinde yineleme yapabilmemize foreach ifadesi ile olanak sağlar.
 
        foreach (int sayac_degisken_ismi in dizi_ismi)
            {
               //komutlar
            }
Params metodu
Yalnızca dizi parametreleri için kullanılabilen bir anahtar sözcüktür. Kullanım amacı, bir dizi tanımlayıp parametre geçmek yerine, dizinin elemanlarını virgül ile verebilmemizi sağlar
örnek: Dizideki sayılardanküçük sayıyı bulan program.
        private void button1_Click(object sender, EventArgs e)
        {
            int[] p = new int[5] { 9, 3, 2, 1,12 };                                          //int[] p = new int[5] { 9, 3, 2, 1,12 };
            label2.Text = min(p).ToString();                                label2.Text = min(9, 3, 2, 1, 12).ToString();
        }
 
        public static int min(int[] dizi)                                       public static int min(params int[] dizi)
        {
             int min_deger = dizi[0];
            foreach (int i in dizi)
            {
                if (i < min_deger) min_deger = i;
            }
            return min_deger;
        }
 
örnek:Dizideki sayılarıntoplamını bulan program.
        private void button1_Click(object sender, EventArgs e)
        {                   
            label2.Text = topla(9, 3, 2, 1, 12).ToString();
        }
 
        public static int topla(params int[] dizi)
        {       
            int top_deger = 0;
            foreach (int i in dizi)
            {
                top_deger += i;
            }
            return top_deger;
        }
 
Delegate(Temsilci)
Delegate'ler metodları temsil eder. Belli olmayan metot çağrımlarını çalışma zamanında belirlemektir. İstediğimiz metodları belli bir sıraya göre çalıştırabiliriz. Ya da arasından ekleme ve çıkarma işlemi yapabiliriz.  Örneğin bir sınıfa ait 30 adet metod olsun. Bu metodların içinden herhangi  4 tanesini  çalıştırmak istersek delegate ifadesini kullanırız.
NOT: Delegatelerin geri dönüş tipi, aldığı parametre sayıları ve parametre türleri temsil edeceği metot ile aynı olmalıdır.
tanımlanması:   delegate geri_dönüş_ tipi temsilci_adı();
ayrı bir sınıfta tanımlama yaparsak başına public gelir.    public delegate void temsilci_adı();
 
Örnek: Formumuza bir adet buton ekleyelim ve aşağıdaki kodları yazalım.
private void button1_Click(object sender, EventArgs e)
        {
            Class1 cs=new Class1();
            //temsilciye ait nesne oluşturduk ve içerisine
            //temsil edeceği metodu yazdık.
            temsilci t1 = new temsilci(cs.Metod1);
            //temsilciye birden fazla metot ekledik
            t1 += cs.Metod2;
            t1 += cs.Metod3;
 
            //Artık temsilci nesnesiyle metodumuzu kullanabiliriz.
            //Parametreyi temsilci nesnesine verdik ama arka planda
            //asıl çalışan içindeki metottur.
 
            t1();//temsilciyi çalıştırdık. Şu an içinde 3 tane metot
            //bulunduğu için sırayla 3 metot da çalışacak.
 
            //temsilciden metot çıkardık.
            t1 -= cs.Metod2;
 
            t1();//temsilciyi çalıştırdık. metot2 yi çıkardığımız için
            //metot1 ve metot3 çalışacak.
        }
 
Bir sınıf oluşturalım.
 
    public delegate void temsilci();
 
    public class Class1
    {
        public void Metod1()
        {
            MessageBox.Show("Metod1 çalıştı");
        }
        public void Metod2()
        {
            MessageBox.Show("Metod2 çalıştı");
        }
        public void Metod3()
        {
            MessageBox.Show("Metod3 çalıştı");
        }
    }
 
Örnek:
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            int x = Convert.ToInt32(textBox1.Text);
            int y = Convert.ToInt32(textBox2.Text);
            Metodlarim mt1=new Metodlarim();
 
            Metodlarim.Tms1 temsilci1 = new Metodlarim.Tms1(mt1.Topla);
            temsilci1 += mt1.Ortalama;
 
            Metodlarim.Tms2 temsilci2 = new Metodlarim.Tms2(mt1.Carp);
            temsilci2 += mt1.Bol;
           
            if (comboBox1.Text=="Toplama")
                temsilci1(x, y);
            else if (comboBox1.Text == "Çarpma")
                temsilci2(x, y);
           
        }
    }
 
    public class Metodlarim
    {
        public delegate void Tms1(int sayi1, int sayi2);
        public delegate void Tms2(int sayi1, int sayi2);
 
        public void Topla(int a, int b)
        {
            MessageBox.Show((a+b).ToString());
        }
        public void Ortalama(int a, int b)
        {
            MessageBox.Show(((a + b) / 2).ToString());
        }
        public void Carp(int a, int b)
        {
            MessageBox.Show((a * b).ToString());
        }
        public void Bol(int a, int b)
        {
            MessageBox.Show((a / b).ToString());
        }
    }
 
 
Örnek:
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
       
        private void button1_Click(object sender, EventArgs e)
        {
            Makine mkn = new Makine();
            string kod=textBox1.Text;
 
            KapamaTemsilcisi kpmtms = new KapamaTemsilcisi(mkn.KapanmaAsamasi1);//****
            kpmtms += mkn.KapanmaAsamasi2;//****
            kpmtms += mkn.KapanmaAsamasi3;//****
            kpmtms += mkn.KapanmaAsamasi4;//****
 
            kpmtms(kod);//****
        }
 
        private void Form1_Load(object sender, EventArgs e)
       {
            progressBar1.Minimum = 0;
            progressBar1.Maximum = 1000;
            for (int i = 0; i < 100; i++)
            {
                progressBar1.Value = i;
            }
        }
    }
 
    public delegate void KapamaTemsilcisi(string isim); //****
 
    public class Makine
    {
        public void KapanmaAsamasi1(string isim)
        { MessageBox.Show(isim + " kodlu makine beklemeye alındı"); }
 
        public void KapanmaAsamasi2(string isim)
        { MessageBox.Show(isim + " kodlu makine soğutuluyor"); }
 
        public void KapanmaAsamasi3(string isim)
        { MessageBox.Show(isim + " kodlu makine kapatılıyor"); }
 
        public void KapanmaAsamasi4(string isim)
        { MessageBox.Show(isim + " kodlu makinenin kapatılma işlemi tamamlandı"); }
    }
 
Event(olaylar):
     .NET Framework'te olaylar önemli eylemleri tanımlayıp yakalamanıza ve durumu işlemek için bir temsilci ayarlamanıza olanak verir.             Bir olayı, olay kaynağı olarak düşünülmüş bir sınıfta bildirirsiniz. Bir olay kaynağı genellikle çevresini izleyen ve önemli bir şey olunca çağıran bir sınıftır. Örneğin otomasyonlu fabrikada bir olay kaynağı, her makinenin ısısını izleyen bir sınıf olabilir. Bir makinenin ısı sınırını geçtiğini (makinenin aşırı sıcak olduğunu) belirleyen ısı izleyici sınıfı "makine aşırı ısınması" olayını çağırır. Çağırılan olay bir yöntemler listesini barındırır. Bu yöntemler "makine aşırı ısınması" olayını işlemeye ve gerekli önlemi almaya, yani makineleri kapatmaya hazır olmalıdır.
tanımlanması:   event temsilci_adı olay_adı;
ayrı bir sınıfta tanımlama yaparsak başına public gelir.    public event temsilci_adı olay_adı;
 
Örnek: Formumuza bir adet button1 ekleyelim.
 
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        //BenimSinifim daki Olayim eventine bu metodu dahil ettik(1. sırada)
        public void Metot1()
        {
            MessageBox.Show("Metot1 çalıştı");
        }
        //BenimSinifim daki Olayim eventine bu metodu dahil ettik(2. sırada)
        public void Metot2()
        {
            MessageBox.Show("Metot2 çalıştı");
        }
 
        BenimSinifim bs = new BenimSinifim(); //heryerden ulaşabilmek için sınıfı
        //metodların dışında tanımladık
 
        //Form daha açılırken metotları evente dahil ettik
        private void Form1_Load(object sender, EventArgs e)
        {
            bs.Olayim += new Temsilcim(Metot1);//metot1 i Temsilcim(delegate) aracılığı ile
            bs.Olayim += new Temsilcim(Metot2);//metot2 yide aynı şekilde evente dahil ettik
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            bs.Tetikle(); //burada eventi çalıştıran metodu çağırdık          
        }
    }
 
 
    public delegate void Temsilcim();
 
    public class BenimSinifim
    {
        public event Temsilcim Olayim;
 
        public void Tetikle()
        {
            if (Olayim!=null)
            {
                Olayim();
            }
        }
    }
 
 
Örnek:
   bir adet timer1 ekleyelim.
Firin isminde bir sınıf ekleyelim.
public delegate void SureTakip();
 
    class Firin
    {
        public event SureTakip olayi_baslat;
 
        public void Kontrol(string belirlenen, string zaman) // (combobox1,label2)
        {
            int belirledigimizsure = Convert.ToInt32(belirlenen);
            int saat = Convert.ToInt32(zaman);
 
            if (belirledigimizsure == saat && olayi_baslat != null)
            {
                olayi_baslat();//olayın tetiklenmesi
            }
        }
    }
 
************************************************************************************
private void Form1_Load(object sender, EventArgs e)
        {
            //ZamanDoldu olayımıza(event) metot ekledik. Olay tetiklenince çalışacak.
            fr.olayi_baslat += new SureTakip(fr_ZamanDoldu);
            //Olayımıza(event) bir metot daha ekledik. Olay tetiklenince iki metot
            //sırayla çalışacak.
            fr.olayi_baslat += new SureTakip(FirinKapan);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();//timer çalışmaya başlıyor
        }
 
        int sayac = 0;
        Firin fr = new Firin();
        private void timer1_Tick(object sender, EventArgs e)
        {
            //timer her çalıştığında sayacı 5 arttırıyor
            sayac += 5;
            //sayaçtaki değeri label2'ye aktardık.
            label2.Text = sayac.ToString(); 
            //Fırın class'ındaki Kontol metodunu çağırdık.
            fr.Kontrol(comboBox1.Text, label2.Text);
            //Eğer combobox ile label eşitse, olayımız(event) tetiklenecek.
        }
        void fr_ZamanDoldu()
        {  
            // fırının çalışma süresi(zamanı) dolduğunda çalışacak kodlar buraya yazılır.
            timer1.Stop();//timer durdurduk
            sayac = 0;
            MessageBox.Show("Yemek pişti");
        }
 
        void FirinKapan()
        {
            // fırın kapandığında çalışacak kodlar buraya yazılır.
            timer1.Stop();//timer durdurduk
            sayac = 0;
            MessageBox.Show("Fırın kapandı");
        }
 
Özellik(Property):
   Bir özellik get ve set anahtar sözcükleri ile başlayan iki kod bloğunu içerir. get bloğu, özellik okunduğunda uygulanan ifadeler içerir. set bloğu da özellik yazıldığında çalışan ifadeleri içerir. Özellik türü, get ve set erişimciler tarafından okunan ve yazılan verinin türünü belirler.
 Burada amaç değişkeni kapsülleme yapıp dışarıdan erişimi korumaktır.
NOT: Set kısmı hiç yazılmazsa değişkene dışarıdan değer atanamaz.
Değişken adına sağ tıklanıp Refactor--> Encapsulate Filed seçeneği tıklanarak kapsülleme otomatik eklenebilir.
           private değişken_türü   değişken_adi;
 
           public değişken_türü değişken_adi
           {
                 get
                 {
                     //erişimci kodu oku;
                 }
                 set
                 {
                     //erişimci kodu yaz;
                 }
           }
Örnek:
 özellikler isminde bir sınıf oluşturun.
    class ozellikler
    {
        private string adi;
 
        public string Adi
        {
            get
            {
                return adi;
            }
            set
            {
                adi = value;
            }
        }
    }
//********************************************************
 
      private void button1_Click(object sender, EventArgs e)
        {
            ozellikler ozl = new ozellikler();
            ozl.Adi = textBox1.Text;
            label1.Text = ozl.Adi;
        }
 
 
 
ADO.NET Veri Tabanı
   ADO.NET (ActiveX Data Object), veri kaynaklarından verileri almak, işlemek, düzenlemek ve veri kaynağına yeni veriler kaydetmek için kullanılan .NET sınıflarının tümüdür.
   Access veri tabanı ile çalışırken aşağıdaki kütüphane kodları eklenmelidir.
 using System.Data.OleDb;
 using System.Data;  
OleDbConnection nesnesi
Connection sınıfı veri tabanıyla bağlantı kurmak ve bağlantıyı düzenlemek için kullanılan bir nesnedir. Microsoft Access veri tabanı için OleDb   yani OleDbConnection sınıfını kullanacağız.
 
Kullanımı
OleDbConnection baglantı = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=deneme.accdb");
Bu kod office 2007 ve üstü için geçerlidir.
NOT: Burada deneme.accdb oluşturduğumuz access veri tabanıdır. deneme.accdb'nin C:/ yazarsak yani C:/ deneme.accdb olursa veri tabanı dosyasını bilgisayarın C bölümünden çağırabiliriz.
* if (baglantı.State == ConnectionState.Closed)
                baglantı.Open();//bağlantı kapalıysa açılır.
 
// komutlar buraya yazılır.
 
* baglantı.Close();//bağlantı kapatılır.
 
 
OleDbCommand nesnesi
Veri tabanımızdaki verilerle ilgili ne yapmak istiyorsak (silme,kaydetme,güncelleme,görüntüleme gibi) bu kısmında tanımlıyoruz.
 
Kullanımı 1.yol:
OleDbCommand komut = new OleDbCommand();
komut = new OleDbCommand("select * from tablo_alan ", baglantı);
Kullanımı 2.yol:
OleDbCommand komut = new OleDbCommand();
komut.Connection = baglantı;
komut.CommandText = "select * from tablo_alan";
OleDbDataAdapter nesnesi
DataAdapter sınıfları uygulama ile veri tabanı arasında iletişim kuran sınıflardır. Bu nesne temelde veritabanından verileri çekip  Dataset’te bir DataTable’a yerleştirmektedir. DataSet’te yapılan değişiklikleri yani kayıt ekleme, silme ve değiştirme işlemlerini veritabanına yansıtmaktadır. OleDbDataAdapter’dan yararlanmak istiyorsanız DataSet nesnesine ihtiyacınız olacaktır.
DataAdapter ile bilgiler Dataset’e aktarılırken Fill() metodundan yararlanılır.
OleDbDataAdapter adaptor = new OleDbDataAdapter();
 DataSet ds = new DataSet();
 
 adaptor.SelectCommand = new OleDbCommand("select * from tablo_alan ", baglantı);
 adaptor.Fill(ds);
 dataGridView1.DataSource = ds.Tables[0]; //Veri tabanındaki tüm verileri DataGridView'de görüntülemeyi sağlar.
 
OleDbDataReader nesnesi
DataReader nesnesinde, command nesnesine ait olan ExecuteReader metodu kullanarak elde edilen kayıtlar tutulur.Yeni DataReader nesnesinin Read metodunu kullanarak, dönen kayıtların ilk satırı elde edilir. Tüm kayıtların elde edilmesi için ise while döngüsü kullanılır.
Kullanımı 1.yol:
OleDbDataReader  reader  =  komut.ExecuteReader();
            reader.Read();
            if (reader.HasRows)
            {      
                txt_alanadi.Text = reader.GetString(1).ToString();   // 1. sütun 0.satırda yer alan veriyi txt_alanadi ismindeki textbox'a yazdırdı.
            } 
 
Kullanımı 2.yol:
 
 OleDbDataReader reader = komut.ExecuteReader();
            while (reader.Read())
            {
                comboBox1.Items.Add(reader[1].ToString().Trim());//1. sütundaki tüm verileri combobox'ın içine attı.
            }                                                                               
 
   
Bugün 10 ziyaretçi (13 klik) kişi burdaydı!
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol