20 Mayıs 2012 Pazar

.scr virüsü ve temizlenmesi

Geçenlerde başıma geldi buraya yazayım dedim.Belki birilerine yardımcı olur.Antivürüs programım aktif değilken usb den bir fotoğraf makinesı bağladım.Maşallah içi virüs kaynıyormuş.Birçok klasörüme bu virüs bulaştı ve dosya uzantılarım .scr oldu.Bundan kurtulmak çok zor bir şey değil.Ben bunun üstesinden Bitdefender ile geldim.Derinlemesine bir tarama yapın önce.Virüs programınızın güncel olmasına dikkat edin.Virüsleri temizledikten sonra işimiz bitmedi daha.Bu virüs asıl dosyaları gizli hale getiriyor.Aşağıda vereceğim kodu dos ortamında her bir sürücü için ayrı ayrı çalıştırın.

c:\ attrib -s -h *-* /S /D

Kaç adet sürücünüz varsa bu kodu hepsine uygulayın.

Yada sürücüye girin klasör ve arama seçeneklerine girin.Görünüm sekmesinden" gizli dosya,klasör ve sürücüleri göster" seçeneğini işaretleyin.Silinmiş gibi görünen dosyalarınız yerinde :)

6 Nisan 2012 Cuma

C# For Döngüsü

C#'ta döngü kullanımları bir çok işimizi kolay hale getirir.Bir döngü kurarak normalde yazmamız gereken bir çok satırı, kurduğumuz döngü sayesinde bir kaç satırla yazabiliriz.Ayrıca döngülerle kontrol işlemleri de yapabiliriz.Yani anlayacağınız döngüler tüm programlama dillerinin vazgeçilmez bir parçasıdır.Bugün döngü tiplerinden For döngüsünü anlatmaya çalışacağım.

For döngüsü en çok kullanılan döngü tiplerinden biridir.



1)

int sayac=0;
for( int i=0 ; i<=10 ; i++ )
{
sayac++;
}

Burada for döngüsü içinde 1.blokta "i" değişkeni tanımlanmıştır.Başlangıç değeri olarak 0 atanmıştır.Yani i değişkeni 0 dan başlayacaktır.2. blokta for döngüsünün koşulu belirlenmiştir.Yani i değişkeni 10 dan küçük olduğu sürece bu döngünün devam edeceği belirtilmiştir. 3. blokta ise i değişkenin artış miktarı belirtilmiştir.Yani döngü her bir dönüşünde i değerinin 1 artacağını belirtmiş oluyoruz.

Döngü ilk çalıştığında i değişkenine 0 atıyor.Daha sonra gelip 10 dan küçük olup olmadığına bakıyor.10 dan küçük olduğu için sayac değişkenini 1 arttırıyor.sayac değişkenini arttırdıktan sonra for döngüsünün 3 bloğuna geliyor döngü ve i değişkenini yine 1 arttırıyor.Sonra 2 bloğa gelip yine 10 dan küçük olup olmadığını kontrol ediyor.Bu şekilde döngü i değişkeni 10 olana kadar bu işlemler her defasında tekrar tekrar gerçekleşiyor.Bu işlem her tekrar ettiğinde sayac değişkeni 1 arttıyor ve son olarak 10 oluyor ve döngü bitiyor.For döngüsü devam ettiği sürece süslü paratezler arasındaki bütün işlemleri teker teker gerçekleştirir.

2)

            int sayac=0;
            for (int i = 0; i < 10; i++)
            {
              
                for (int j = 0; j < 10; j++)
                {
                sayac++;
                }
            }
            textBox1.Text = ikinci.ToString();


Bu kısımda iç içe for döngüleri kullanılmıştır.İlk döngü bir kere çalıştıktan sonra alttaki döngüye geçer ve bu döngünün koşulunu sağlayana kadar döngü devam eder.Alttaki döngünün koşulu tamamlandıktan sonra ilk döngüye geri döner.Eğer koşul hala sağlanmamışsa alttaki döngü tekrar çalışır.Bu şekilde döngüler koşullar sağlanana kadar devam eder.Yaptığımız bu örnekte bu kod satırları tam 100 defa çalışır.Gördüğünüz gibi bir kaç satırda 100 defalık bir işlem yapmış olduk.Döngüden çıktıktan sonra sayac değişkeninin değeri Textbox'a 100 olarak basılır.Birden fazla döngüyü iç içe alabiliriz.Bu bizim yapacağımız yazılma göre şekillenir.

Bundan sonraki konum yine döngüler olacak.For ve diğer döngüler ile ilgili örnekler ve açıklamalar yapmaya devam edeceğim.

1 Nisan 2012 Pazar

C# Tek boyutlu diziler ve sıralama

Programlama dillerinde tek boyutlu,çift boyutlu ve çok boyutlu diziler kullanılmaktadır.Diziler yapacağımız işlemleri daha da kolaylaştırmak için vardır.Dizileri kullanarak basit mantıkta bir sürü değişken tanımlamaktan kurtulmuş oluruz.Aşağıda yapacağımız örnekte tek boyutlu bir dizi kullanacağız ve bu dizinin elemanlarını küçükten büyüğe doğru sıralayacağız.

Tek boyutlu diziler

int[] A=new int[dizi boyutu]
string[] A=new string[dizi boyutu]
double[] A=new double[dizi boyutu] şeklinde  tanımlanabilirler.

Dizi boyutu yazılan yere örneğin 5 yazarsak; bu dizi maksimum 5 eleman kabul edebilir.Dizilerde her elemanın bir index numarası vardır.Dizimiz 5 elemanlı interger tip tutan bir dizi olsun.İçindeki değerler

10
15
20
25
30 olsun.Dizilerde index numaraları 0 dan başlar.Buarada dizimizin elemanı olan 10 değerinin index numarası 0'dır.15 değerinin index'i ise 1 dir.En son 25 değerinin index numarası 4 tür.Diziler 0 dan başladığı için dizi boyutu-1 e kadar gider.Şimdi örnek programımıza geçebiliriz.


Resimdeki gibi bir form hazırlıyoruz.Daha sonra formumuza şu kodları ekliyoruz:

 int[] dizi = new int[5];// 5 elemanlı bir dizi tanımlanıyor 
        int sayac = 0;// kaç adet eleman girildiğini tutmak için tanımlandı
        private void button1_Click(object sender, EventArgs e)
        {
            if(sayac==0)
                label2.Text = "";// sayac 0 ise label2 nin içeriği temizleniyor
           
            dizi[sayac] = Convert.ToInt32(textBox1.Text);// butona her basıldığında dizinin indexine girilen değer atanıyor
            sayac++;// sayacı 1 arttırıyoruz ki her defasında aynı indexin üzerine yazmasın
            textBox1.Text = "";
            textBox1.Focus();// Textbox a değer girilip butona basıldıktan sonra imlecin yine textboxta kalması sağlanıyor.
            if (sayac == 5)// dizinin kapasitesi 5 ti.5 ten fazla girilmesine engel oluyoruz.
            {
                
                Array.Sort(dizi);//dizi burada sıralanıyor
                
                for (int i = 0; i < dizi.Length; i++)
                {
                    label2.Text += " "+dizi[i].ToString();// buradada dizinin bütün içeriği yazılıyor
                }
                sayac = 0;// yeniden işlem yapabilmek için sayac sıfırlandı
                

            }
        } 

Dizi ve sayac tanımlamamızı global alanda tanımlıyoruz.Eğer bunları butonun içinde tanımlamış olsaydık butona her basıldığında başlangıç değerlerini almış olacaklardır.Buda bizim işimize yaramayacaktır.

Butona her basılışta sayac değerimiz (sayac++;) komutuyla birer birer arttıyor.Sayac değerimizi arttırmamız butona her basışta dizinin farklı bir index'ine değer atamamızı sağlar.Şöyle ki ; 

dizi[sayac] kodunun anlamı aslında,sayac değeri 0 iken dizi[0], 1 iken dizi[1] diye gider.Bu yüzden textbox'a girilen değer her defasında dizinin farklı bir index'ine atılır.

Array.Sort(dizi); komutuyla dizimizin içeriğini otomatik olarak küçükten büyüğe doğru sıralar.Eğer büyükten küçüğe sıralamak istersek Array.Reverse(dizi); komutunu ekleyerek bu işlemi yapabiliriz.

Programın en sonunda dizinin içeriğini label 'a yazırmak kalıyor.for döngüsü içindeki i değişkeni birer birer arttığı için dizinin içeriğini sırayla yazdırmış oluyoruz.Ve son olarak sayac değişkenini 0 yaparak yeni işlem yapılmasını sağlayabiliyoruz.


23 Kasım 2011 Çarşamba

C# Sayıyı Yazıya Çevirme(Sayının yazı karşılığı)

Merhaba arkadaşlar.Bugün paylaşacağım şey mantık oluşturması açısından önemli bir örnek.Basit şekilde yapılmış bu program ileride yapacağımız bir fatura programında kullanılabilir.Bildiğiniz gibi faturalarda Toplam Tutar yazar.Hemen yanında veya altında Toplam Tutarın yazıyla basılmış halini görürüz.Bu yaptığımızı programda bunu tam olarak yapmasakta mantık oluşturması bakımından iyi olacaktır. Biz burada sadece 0 ile 1000 arasında girilen tam sayıları yazıya çevireceğiz.Geliştirmesi size kalmış:)

Öncelikli aşağıdaki formu hazırlıyoruz.






























Gördüğünüz gibi formumuzda 1 adet Textbox 1 adet button 2 adet Label var.Bu formu oluşturduktan sonra button'a çift tıklayarak click olayına aşağıdaki kodları yazıyoruz.



private void button1_Click(object sender, EventArgs e)
        {
            int yuzler = 0, onlar = 0, birler = 0, girilen;
            string sonuc = "";
            girilen = Convert.ToInt32(textBox1.Text);
            if (girilen <= 0 || girilen >= 1000)
                MessageBox.Show("Lütfen 0 ile 1000 arasında bir sayı giriniz", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Error);
            if (girilen > 99)
            {
                yuzler = girilen / 100;
                if (girilen - (yuzler * 100) == 0) goto ifSonu;
                onlar = (girilen - (yuzler * 100)) / 10;
                birler = girilen - ((yuzler * 100) + (onlar * 10));
            }
            else if (girilen > 9)
            {
                onlar = girilen / 10;
               
                birler = girilen - (onlar * 10);






            }
            else
                birler = girilen;




        ifSonu:
            


            if (yuzler > 0)
            {
               
                switch (yuzler)
                {
                    case 1:
                        sonuc = "yüz";
                        
                        break;
                    case 2:
                        sonuc = "ikiyüz";
                        break;
                    case 3:
                        sonuc = "üçyüz";
                        break;
                    case 4:
                        sonuc = "dörtyüz";
                        break;
                    case 5:
                        sonuc = "beşyüz";
                        break;
                    case 6:
                        sonuc = "altıyüz";
                        break;
                    case 7:
                        sonuc = "yediyüz";
                        break;
                    case 8:
                        sonuc = "sekizyüz";
                        break;
                    case 9:
                        sonuc = "dokuzyüz";
                        break;
                }
            }
            if (onlar > 0)
            {
                switch (onlar)
                {
                    case 1:
                        sonuc = sonuc + "on";
                        break;
                    case 2:
                        sonuc = sonuc + "yirmi";
                        break;
                    case 3:
                        sonuc = sonuc + "otuz";
                        break;
                    case 4:
                        sonuc = sonuc + "kırk";
                        break;
                    case 5:
                        sonuc = sonuc + "elli";
                        break;
                    case 6:
                        sonuc = sonuc + "altmış";
                        break;
                    case 7:
                        sonuc = sonuc + "yetmiş";
                        break;
                    case 8:
                        sonuc = sonuc + "seksen";
                        break;
                    case 9:
                        sonuc = sonuc + "doksan";
                        break;
                }
            }
            if (birler > 0)
            {
                switch (birler)
                {
                    case 1:
                        sonuc = sonuc + "bir";
                        break;
                    case 2:
                        sonuc = sonuc + "iki";
                        break;
                    case 3:
                        sonuc = sonuc + "üç";
                        break;
                    case 4:
                        sonuc = sonuc + "dört";
                        break;
                    case 5:
                        sonuc = sonuc + "beş";
                        break;
                    case 6:
                        sonuc = sonuc + "altı";
                        break;
                    case 7:
                        sonuc = sonuc + "yedi";
                        break;
                    case 8:
                        sonuc = sonuc + "sekiz";
                        break;
                    case 9:
                        sonuc = sonuc + "dokuz";
                        break;
                }


                }


            label1.Text = sonuc;
        }






En başta "girilen" diye bir değişken tanımladık.Bu int tipindeki değişkene klavyeden girdiğimiz sayıyı atıyoruz:
 girilen = Convert.ToInt32(textBox1.Text);


Burada bu değişkeni int olarak tanımladık çünkü bizim küsüratlı sayılarla işimiz yok ve int kullanmamız burada  bize büyük avantaj sağlayacak.Bunu programın gidişatında anlayabilirsiniz.


 if (girilen <= 0 || girilen >= 1000)
  MessageBox.Show("Lütfen 0 ile 1000 arasında bir sayı giriniz", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Error);


Bu iki satıda girilen değerlerin kontrolünü yapıyoruz.0 ile 1000 arasındaki sayıları kabul ediyoruz sadece.Eğer bu koşula uymayan bir durum varsa messagebox nesnemiz çalışıyor.Messagebox'ın içine girilen ilk ifade göstermek isteğimiz uyarı mesajı ikinci ifade mesaj başlığımız üçüncüsü kullanılan button dördüncüsü ise messagebox içerisinde kullandığımız icon.Messagebox'ın birçok şekilde kullanımı vardır.



  if (girilen > 99)
            {
                yuzler = girilen / 100;
                if (girilen - (yuzler * 100) == 0) goto ifSonu;
                onlar = (girilen - (yuzler * 100)) / 10;
                birler = girilen - ((yuzler * 100) + (onlar * 10));
            }


Girilen sayı üç basamaklı ise yukarıdaki bu kod parçacığı çalışacaktır.Örnek olarak 115 sayısını ele alalım.Bu 3 basamaklı bir sayı olduğu için burada işleme sokuyoruz.Bu sayıyı 100'e böldüğümüzde 1.15 çıkıyor.Ama biz değişken tiplerimizi int olarak belirttiğimiz için bunun sadece tam kısmını alıyoruz.Int olarak tanımlamamızın avatajı burada.yuzler=1 oldu.İkinci kısımda aynı şekilde onlar=1 diğerinde ise birler=5 çıkıyor.Buradaki mantık sayıyı tamamen parçalamak.Basamaklarına ayırdık ki daha kolay bir şekilde yazıya dökebilelim.  if (girilen - (yuzler * 100) == 0) goto ifSonu; Bu cümlenin anlamı şudur.Girdiğimiz sayı düzse yani 100 200 300 gibi sayılarsa başka hiçbir işlem yapmadan goto ile gösterilen yere dallanıyor.Burada ifsonu diye bir etiket tanımlamışız.Eğer sayı böyle gelirse bütün işlemleri durdurup etiketin olduğu yerden devam ediyor.Bunu da programın bütününe bakarsanız göreceksiniz.



  else if (girilen > 9)
            {
                onlar = girilen / 10;
               
                birler = girilen - (onlar * 10);
}


Bu kısımda da aynı şekilde eğer 2 basamaklı bir sayı girilirse basamaklara bölüyoruz.


        else


                birler = girilen;


Zaten girilen tek basamaklı bir sayı ise bölmeye gerek yok direk birler değişkenimizin içine atıyoruz.

Son kısımda sayımızı basamaklara böldükten sonra herbir sayıya denk gelen yazılara isim veriyoruz. yuzler=1 ise bunun yazı karşılığı yüz olacaktır.Önemli nokta basamaklarımız 0 dan büyük ise isim verme olayı gerçekleşecektir.(if (onlar > 0))


Şart gerçekleştikten sonra switch case yapısıyla değişkenimizin hangi değerde olduğunu buluyoruz ve string tipindeki sonuc değişkenimizin içerisine ne yazması gerektiğini atıyoruz.Diğer yerlerdede aynısını yapıyoruz.Bu kısımda stiring ifadeleri toplamış oluyoruz. sonuc="yüz" ise sonuc=sonuc+"elli" dersek sonucu yazdığımız zaman "yüzelli" şeklinde olacaktır.En sonunda zaten label'a sonuc değişkenimizi atayıp olayı bitiriyoruz.





21 Kasım 2011 Pazartesi

C# Hesap Makinesi(Basit)

Merhaba arkadaşlar.Bu yazımda c#'ta basit bir hesap makinesi nasıl yapılır onu anlatacağım.Çok basit bir program yazacağımız için bu yazının yeni başlayanlar için iyi olacağını düşünüyorum.

İlk olarak aşağıdaki formu hazırlayalım












Programımızın nasıl çalıştığından bahselim biraz.Formumuzda 3 adet Textbox 4 adet radiobutton 1 adet checkbox ve 1 adet button var.Sayı 1 ve sayı 2 kısmına rakam girip işlem seçiniz menüsünden seçtiğimiz işleme göre sonuç üretiyoruz.Eğer "Dialogta göster" checkbox'ı seçiliyse sonucu bir mesaj penceresiyle göstereceğiz.Eğer seçili değilse Textbox içerisinde göstereceğiz.Program çalıştıktan sonraki görüntü aşağıdaki gibi olacaktır.
















Eğer checkbox seçili olursa butona bastığımızda görüntü aşağıdaki gibi olacaktır.














Radiobutton ile checkbox arasında büyük fark vardır.Formda 3 adet checkbox olduğunu düşünürsek hepsini bağımsız bir şekilde seçebiliriz.Ama radiobutton'da ise tek bir tanesini seçme şansımız vardır.Yani kullanıcıya sadece verdiğimiz seçeneklerden bir tanesi seçme şansı veriyoruz.Girdiğimiz iki değeri radiobutton'da seçilen değere göre işleme sokuyoruz ve ve sonucun nasıl gösterileceğini seçiyoruz.Tabiki bunların hepsini button'nun click olayına yazıyoruz.Kodlar aşağıdaki gibi olacak.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace hesap_makinesi
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public double toplam;

        private void button1_Click(object sender, EventArgs e)
        {
            if (r_topla.Checked == true)
            {
                toplam = Convert.ToInt32(txt_ilk.Text) + Convert.ToInt32(txt_ikinci.Text);
             
           
            }
            else if (r_cikar.Checked==true)
            {
                toplam = Convert.ToInt32(txt_ilk.Text) - Convert.ToInt32(txt_ikinci.Text);
           
            }
            else if (r_carp.Checked==true)
            {
                toplam = Convert.ToInt32(txt_ilk.Text) * Convert.ToInt32(txt_ikinci.Text);

            }
            else if (r_bol.Checked==true)
            {
                toplam = Convert.ToDouble(txt_ilk.Text) / Convert.ToDouble(txt_ikinci.Text);

            }

            if (cb_isaret.Checked == true)
            {
                MessageBox.Show("Sonuc :"+toplam.ToString(),"Hesap Makinesi");

            }
            else
            {
                txt_sonuc.Text = toplam.ToString();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            r_topla.Checked = true;
        }

      
    }
}


Arkadaşlar formu hazırladıktan sonra sağdaki properties kısmından nesne isimlerini değiştirmek işinizi kolaylaştıracaktır.Bu örnek nesnelerin adı ilk geldiği gibi değil.Mantıklı isimler vermeye çalıştım.Böyle yapmak nesneler çok olduğunda hangi nesne ne işe yarıyordu ne yapıyordu anlamamızı kolaylaştıracaktır.Programımızın kod bölümünü anlatayım biraz.


Button'un click olayına yazdığımızı daha önce söyledik.Bütün olaylar butona tıklanınca gerçekleşiyor.İlk olarak toplam diye bir double değişken tanımladık.Burada int olarak değilde double tanımlamamızın nedeni bölme işleminde sonucun küsüratlı olma ihtimali.Int olarak tanımlasaydık küsüratı göremezdik.

ikinci kısımda if (r_topla.Checked == true) bu ifadelerle hangi radiobutton'un seçili olduğunu bulmaya çalışıyoruz.Örnek r_topla seçeneği seçili ise onun altındaki kod parçacığı çalışacaktır.Bu if kontrollerini yaptıktan sonra içerisine hangi fonksiyonda ne çalışması gerekiyorsa o işlemi yaptırıyoruz.Textboxları convert ettikten sonra toplam değişkenin içine atıyoruz.Bu kod çalıştıktan sonra toplam değişkenimizin içi radioButton'un seçilmesine göre değer alacaktır.

Son kısımda ise toplam değişkenini yazdırmak kalıyor.Yani sonucu.Burada dikkat edilmesi gereken nokta checkbox seçilimi değil mi ?Eğer seçiliyse yani cb_isaret.Checked == true ise Messagebox ile ekrana gösterecek sonucu.Eğer seçili değilse textbox'a yazacak sonucu.MessageBox.Show("Sonuc :"+toplam.ToString(),"Hesap Makinesi"); bu fonksiyonla message olarak ekrana gösterebiliyoruz.Değilse txt_sonuc.Text = toplam.ToString(); bu kodla Textbox'a yazacak.

Son olarak radiobuttonlardan birinin forma açılırken seçili gelmesini istiyorsak  formun load kısmına şu kodu yazdık :   r_topla.Checked = true;

Bu yazımız bu kadar arkadaşlar.Umarım işinize yarar.Sorularınız olursa cevaplandırabilirim.

20 Mayıs 2011 Cuma

C# TextBox'a sadece sayı girişi(KeyPress(Tuş Bilgisi Okuma))

Merhaba arkdaşlar.Bugün C#'ta textbox'a sadece sayı girilmesini sağlayacak bir program yazacağız.Bu küçük ama çok kullanışlı bir fonksiyon birçok yerde karşımıza çıkacaktır.

C#' ta  klavye tuşlarını kontrol etme olayları vardır.Bunlar KeyDown olayı,KeyPress olayı,KeyUp olayı.Bu olaylara ulaşmak için yapmamız gereken şey çok basit.Üzerinde kontrol yapmak istediğiniz kontole tıklayın ve properties pencerisinde En üstte Şimşek iconlu Events bölümü var oraya tıklıyoruz.Ve daha sonra aşağısında bulunun KeyPress olayını buluyoruz ve karşısına gelip çift tıklıyoruz ve artık Keypress olayının içine kodlarımızı yazabiliriz.























Keyprese tıladıktan sonra içerisine kod yazacağımız events geliyor.












Bu olay arasına kodlarımı yazmaya başlıyoruz.

  private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
  if ((int)e.KeyChar >= 47 && (int)e.KeyChar <= 57)
            {

                e.Handled = false;//eğer 47 -58 arasındaysa tuşu yazdır.

            }

            else if ((int)e.KeyChar == 8)
            {

                e.Handled = false;//eğer basılan tuş backspace ise yazdır.

            }

            else
            {

                e.Handled = true;//bunların dışındaysa hiçbirisini yazdırma
          
        }
e.KeyChar fonksiyonu C#'ın kendi fonsiyonudur.Herhangi bir tuşun kodunu kontrol eder.Burada yaptığı görev belirtilen değerler arasında tuşu kabul edecek yada etmeyecek.Burada kodu 47 ile 57 kodları arası tuşları kabul ettik.Çünlü bu aralık sadece rakamları kapsıyor.Bizim istediğimiz texbox'a sadece rakam girebilmekti.

Eğer basılan tuş 47 ile 57 arasında ise e.Handled=false yani basılan tuşu kabul et diyoruz.
Burada atlamamamız gereken bir konu var.Sadece rakam yazdıracağız dedik ama bir de yanlış yazdığımız rakamı silmek var.Yani backspace tuşunuda kullanıma açmamız gerekiyor. onun içinde Kodu 8 olan karakteride kabul etmiş olduk.Onuda e.Handled=false olarak geri döndürdük.

Son olarak eğer bu tuşlar dışında başka bir tuşa basılmışsa bunu kabul etmiyoruz.Bunu yapmak içinde e.Handled=true olarak döndürdük.

13 Mayıs 2011 Cuma

Temel C# Konuları 2.(Combobox Kullanımı(KDV programı))

Merhaba arkadaşlar.Bugün C#'ta combobox,textbox,label ve button kullanarak basit bir fiyat hesaplayıcı programı yapacağız.Öncelikle aşağıdaki formu hazırlayalım.











Yapmak istediğimiz şey butona bastığımızda girilen fiyatı adet ve kdv oranıyla çarpıp ödenecek tutar kısmına sonucu yazması.Butona bastığımızda işlem yapılacağı için butonun click olayına kodları yazmamız gerekiyor ama kdv oranlarının form açıldığı anda combobox'a yüklenmesini sağlamak için form'un load kısmına da bi kaç kod yazmamız gerekiyor.Form'da herhangi bir boş yere çift tıklayıp form'un load kısmına gelip aşağıdaki kodları yazalım.

private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.Add("8");
            comboBox1.Items.Add("18");
            comboBox1.Items.Add("25");
        }

Bu kodu eklediğimizde form açıldığı anda combobox'ın içerisini belirlediğimiz kdv oranlarıyla doldurmuş oluyoruz.Bu işlemi manual olarakta yapabiliriz.Combobox seçiliyken properties pencerisinde items özelliğine tıklayarak oraya direkt kdv oranlarını ekleyebiliriz.Bunları yaptıktan sonra artık asıl işi yapacak kodumuzu butonun içerisine yazıyoruz.


  private void button1_Click(object sender, EventArgs e)
        {
            textBox3.Text = Convert.ToString((Convert.ToDouble(textBox1.Text) + ((Convert.ToDouble(textBox1.Text) * Convert.ToInt32(comboBox1.SelectedItem)) / 100)) * Convert.ToInt32(textBox2.Text));
        }


Bu kodu yazdığımızda olan olay şu:

Textboxlar string tipinde değer tutarlar.Bu yüzden textboxların içerisine direkt olarak sayısal değer atayamayız yani double,int gibi.Öncelikle textbox'ın içindekini convert etmemiz gerekir.Eğer ondalıklı bir sayı tutacaksak convert.todouble ifadesini kullanırız.Eğer ondalıklı olmayan bir sayı tutacaksak convert.toint32 işimizi görür.

Dikkat ederseniz textboxlarımızı comboboxları hep convert ederek işlem yaptık.Çünkü öbür türlü işlem sonucu alamayız sadece string olarak toplamış olursunuz.Buda bizim işimize şuan yaramaz.

Combobox içerisindeki değeri combobox.text olarakta alabiliriz.Ama ileride bu yöntem bize lazım olacağı için combobox1.selecteditem olarak aldık.

En sonda bütün işlemlerin sonucunu textbox'a yazmak için convert.tostring özelliğini kullanmamız gerekiyor çünkü Textbox sadece string değer alıyordu hatırlarsanız.Biz bütün işlemleri sayısal olarak yaptıktan sonra string'e çevirip atmamız gerekiyor.Textbox3.text bizim sonucumuzun görünecek kısmı.

Yaptığımız işlem ise şu
( girilenpara+ ( ( girilenpara * kdvoranı) / 100 ) ) * adet   sonucu git Textbox3.text'e yaz.

girilenpara=Texbox1.text
kdvoranı=Combobox1.selecteditem veya Combobox1.text
adet=Textbox2.text


Girilen tüm bilgileri convert ederek işlem yaptık ve sonucunu bir textbox'a yazdırdık.











eğer convertleri karıştırıyorum diyorsanız aynı işi yapan şu kodlarıda kullanabilirsiniz :

private void button1_Click(object sender, EventArgs e)
        {
            double fiyat =Convert.ToDouble( textBox1.Text);
            int adet = Convert.ToInt32(textBox2.Text);
            int kdv = Convert.ToInt32(comboBox1.SelectedItem);
            textBox3.Text = Convert.ToString ( fiyat + ( ( fiyat * kdv ) / 100 ) * adet );
        }

Burada girilen değerleri direkt olarak çevirip değişkenlerimizin içine atıyoruz.ve sonrasında normal işlemleri yapıp en son yine string'e çevirerek sonucu basıyoruz.Dikkat etminiz gereken yer değişkene atama yaparken değişken hangi tipteyse ona göre convert etmeniz gerekir.Bütün kodlar aşağıdadır.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace _2.ders_kdv
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.Add("8");
            comboBox1.Items.Add("18");
            comboBox1.Items.Add("25");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox3.Text = Convert.ToString((Convert.ToDouble(textBox1.Text)+((Convert.ToDouble(textBox1.Text)*Convert.ToInt32(comboBox1.Text))/100))*Convert.ToInt32(textBox2.Text));
        }
    }
}