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));
        }
    }
}

10 Mayıs 2011 Salı

Temel C# Konuları 1.(TextBox,Label ve Buton Kullanımı)

Merhaba arkadaşlar.Bu ilk konumuz olacak.Bir süre C# ile ilgili araçların kullanımdan bahsetmeye çalışacağım.Daha sonra C# ta yararlı ve öğretici uygulamalar yapacağız.Bugünkü konumuz TextBox ve buton kullanımı.

Textbox ve Buton C#'ın vazgeçilmez iki bileşenidir. Genelde Texbox içerisindeki veriyi butonla kontrol ederiz.Bunu örneklerle daha iyi anlayacaksınız.
Öncelikle visual studio açalım.Sırasıyla File-New-Project tıklayalım.















Daha sonra gelen ekranda Sol sekmede C# altında Windows'u seçelim ve sağ tarafta Windows Form Application'ı seçelim.















Burada Projemize bir isim verip nereye kaydedeceğimiz seçip OK tuşuna basalım.Şuan bulunduğumuz form projemizi şekillendireceğimiz yerdir.Bu form üzerine elemanlarımızı ToolBox üzerinden yerleştiririz.






















Kullanacağımız bütün elemanlar ToolBox içindedir.Herhangi bir elemanı sürükleyerek yada çift tıklayarak formumuza ekleyebiliriz.Bu örneğimizde bir adet Textbox,bir adet Button ve bir adet Label  kullanacağız.Bunları sayfamıza ekleyelim.Aşağıdaki gibi bir görünüm elde edeceğiz.













Şimdi yapmak istediğimizi anlatayım.Çok basit bir uygulama yapacağız.TextBox ' a girilen içeriği buttona basıldığı anda label'a yazacağız.Bunu yapmak için button1'e çift tıklayıp click özelliğine giriyoruz.Click'in anlamı   butona basıldığı zaman içerisindeki kodları çalıştır olarak düşünebilirsiniz.Bunu ilerleyen derslerde daha detaylı bir şekilde yapacağız.Çift tıklayıp butonun içerisine girdik.Aşağıdaki gibi bir görüntü elde edeceğiz.











Bu ekran bizim kod kısmımız.Diğer taraf Desing kısmımızdı istediğimiz anda diğer tarafa geçebiliriz.Burada button1_Click'e ait iki tane süslü parantez var.Butona tıklanınca çalıştırmak istediğimiz kodları buraya yazacağız.Aşağıda yazdığım kodları oraya ekleyin.Buarada buarada yazdığım kodları kopyala yapıştır yoluyla almazsanız sizin açınızdan daha iyi olur kod yazmada alışkanlık kazanmış olursunuz.


label1.Text = textBox1.Text;

bu kodu ekledik ve yukarıdaki yeşil play düğmesinden programımızı çalıştırıyoruz.TextBox'a herhangi birşey yazın ve buton'a basın.TextBox'a yazmış olduğunuz yazının label1'e yazıldığını göreceksiniz.

 










Programı kısaca anlatmaya çalışacağım.TextBoxlar ve Label'lar her zaman string ifade tutar.Sayısal rakamlarda tutarlar ancak yinede içerisinde gösterebilmemiz için string'e çevirmemiz gerekir.Mesela bu örnekte TextBox'ın textine yazığımız ifayi label'ın textinde gördük.Yani text dediğimiz şey aslında görünen kısımdır.Yani bir elemanın içerisinde ne görmek istiyorsak onun  text özelliğine yazarız.

Burada Butona basdığımız anda(Click Olayı) Textbox'ın içindeki veriyi alıp Label'ın Text'ine atıyor.Yani görünen kısmına atıyor.

Bu konumuz bu kadardı.Biraz basit bir konu oldu ileride daha iyi şeyler yapacağız.