GRAFİK ANİMASYON DERSİ
Transkript
GÖRSEL PROGRAMLAMA DERS NOTLARI ÖĞRENCĠNĠN ADI : SOYADI : NUMARASI : : ĠÇĠNDEKĠLER MODÜL 1: NESNE TABANLI PROGRAMLAMAYA GĠRĠġ .....................................................................................................2 A.PROGRAM KURULUMU ..........................................................................................................................................2 B.PROGRAMLAMA ORTAMI .......................................................................................................................................2 1.Temel ĠĢlemler .................................................................................................................................................2 2.Arayüz ............................................................................................................................................................3 C.ĠSĠM UZAYLARI ...................................................................................................................................................4 1.NameSpace .....................................................................................................................................................4 2.Using Ġfadesi....................................................................................................................................................4 3.Nesne Ekleme ..................................................................................................................................................4 5.Nesneye Kod Yazma .........................................................................................................................................4 D.DEĞĠġKENLER VE VERĠ TÜRLERĠ ...........................................................................................................................4 1.DeğiĢken Tanımlama Kuralları ............................................................................................................................4 2.Temel Veri Türleri .............................................................................................................................................4 3.DeğiĢken Tanımlama.........................................................................................................................................5 4.Tip DönüĢümleri: ..............................................................................................................................................7 E.OPERATÖRLER ....................................................................................................................................................8 1.Aritmetiksel Operatörler ....................................................................................................................................8 2.Atama Operatörü..............................................................................................................................................9 3.Artırma ve Azaltma Operatörleri .........................................................................................................................9 MODÜL 2:NESNE TABANLI PROGRAMLAMADA KARAR VE DÖNGÜ YAPILARI .................................................................... 10 A.ĠLĠġKĠSEL VE MANTIKSAL OPERATÖRLER ............................................................................................................. 10 1.ĠliĢkisel Operatörler ........................................................................................................................................ 10 2.Mantıksal Operatörler...................................................................................................................................... 10 3.Operatör Önceliği ........................................................................................................................................... 11 B.ġART ĠFADELERĠ ............................................................................................................................................... 11 1.If Ġfadesi ....................................................................................................................................................... 11 2.Ġçi Ġçe If Ġfadesi.............................................................................................................................................. 12 4.Switch Ġfadesi ................................................................................................................................................ 12 C.DÖNGÜ YAPILARI .............................................................................................................................................. 15 1.While Ġfadeleri ............................................................................................................................................... 15 2.For Ġfadeleri ................................................................................................................................................... 16 3.Do Ġfadeleri ................................................................................................................................................... 17 4.Break Ġfadeleri ............................................................................................................................................... 17 D.DiYALOG KUTULARI ........................................................................................................................................... 18 1.MessageBox Kullanımı ..................................................................................................................................... 18 2.InputBox Kullanımı ......................................................................................................................................... 19 E.HATA AYIKLAMA ................................................................................................................................................ 19 1.Try-Catch Bloğu ............................................................................................................................................. 19 2.Adım Adım Ġzleme .......................................................................................................................................... 19 MODÜL 3:NESNE TABANLI PROGRAMLAMADA WINDOWS UYGULAMALARI ...................................................................... 20 A.WĠNDOWS FORMLAR ......................................................................................................................................... 20 1.Windows Form Uygulaması OluĢturma .............................................................................................................. 20 2.Windows Form Özellikleri................................................................................................................................. 20 3.Nesneler........................................................................................................................................................ 22 } ..................................................................................................................................................................... 37 4. Veri Tabanı ĠĢlemleri ...................................................................................................................................... 38 1 MODÜL 1: NESNE TABANLI PROGRAMLAMAYA GĠRĠġ Programın kodlanması sırasında bir programlama dili kullanılır. Kullanılacak programlama dili programcı tarafından belirlenir. Biz derslerde Microsoft Visual Studio Express 2012 kullanacağız. A.PROGRAM KURULUMU http://www.microsoft.com/visualstudio/tur#products/visual-studio-express-products adresinde Indir linki sonra Visual Studio Express 2012 baĢlığı altındaki Windows Masaüstü için Visual Studio 2012 Express seçeneğine ait ġimdi Yükle linki çalıĢtırılır. Web Platform Installer programı „wdexpress_full.exe‟ dosyasını bilgisayara inmeye baĢlar. ĠĢlem sonucunda bilgisayara yüklenen „wdexpress_full.exe‟ uygulama dosyası çalıĢtırılarak yükleme baĢlatılır. Ön yükleme bittikten sonra bilgisayarın yediden baĢlatılması gerekecektir. Bilgisayar açıldıktan sonra, BaĢlat/Tüm Programlar/Microsoft Visual Studio 2012 Express/VS Express for Desktop yolunu seçerek yazılım baĢlatılır. Program ilk kez baĢlatıldığında 30 günlük deneme sürümü olduğunu belirten bir pencere ile Product Key istenir. Register Online linki kullanılarak internet üzerinden açılan kayıt sayfasında e-posta adresi ve gerekli bilgiler girilerek görüntülenen Ģifre ilgili alana kopyalanarak onaylanır. NOT: Ġstenirse Product Key penceresi kapatılarak 30 gün içinde daha sonra HelpRegister Product komutu ile açılan pencere ile aynı iĢlemler yapılabilir. B.PROGRAMLAMA ORTAMI Nesne tabanlı programlama yazılımı ortamı, aynı zamanda grafiksel windows tabanlı uygulamalar oluĢturmak için ihtiyaç duyulan her Ģeyi kapsar. Windows tabanlı uygulamanın forma dayalı kullanıcı arayüzü etkileĢimli olarak tasarlanabilir. Nesne tabanlı programlama yazılımı grafiksel uygulamanın iki görünümünü sağlar: Tasarım görünümü ve kod görünümüdür. NOT: Nesne tabanlı programlama yazılımı grafiksel uygulamalar için iki Ģablon sağlar: Windows Form Application Ģablonu ve WPF Application Ģablonudur. Birbirine çok benzer bu iki Ģablondan WPF daha geliĢtirilmiĢ bir teknoloji olduğu için birçok ek özellik ve kapasite sağlar. 1.Temel ĠĢlemler Program yüklendikten sonra BaĢlat/Tüm Programlar/Microsoft Visual Studio 2012 Express/VS Express for Desktop yolu seçilerek baĢlatılır. Yeni bir uygulama açma: Ġlk açılıĢ (Start Page) ekranında New Project veya File/ New Project komutu çalıĢtırılır. Açılan pencerede Installed Templates bölümünden Visual C#, sağ taraftan Windows Form Application seçilir ve alt tarafta bulunan Name bölümüne proje ismi yazılarak onaylanır. Var olan uygulamayı açma: Ġlk açılıĢ (Start Page) ekranında Open Project veya File/ Open Project komutu çalıĢtırılır. Açılan pencerede dosya seçilir. Uygulamayı kaydetme: File/ Save All komutu çalıĢtırılır. Eğer ilk kez kaydediliyorsa ekrana Save Project penceresi gelecektir. Bu pencerede kayıt yeri belirlenir ve isteniyorsa uygulama ismi değiĢtirilir. Uygulamayı çalıĢtırma: Debug/Start Debugging komutuyla, F5 tuĢuyla veya araç çubuğundan düğmesi ile çalıĢtırılır. Program 2 çalıĢmaya (eğer bir değiĢiklik yapılmadıysa) ilk oluĢturulan form ile baĢlar. AçılıĢ formunu değiĢtirmek için Program.cs içinde: Application.Run(new form1()); kodundaki form isminin değiĢtirilmesi gerekir. 2.Arayüz Toolbox(1): Araç kutusu. (View menüsünden açılır veya kapatılır.) Form(2): Tasarım alanı. Projede bir den fazla form kullanılabilir. Bunun için Solution Explorer panelinde proje adı üzerinde sağ tuĢ menüsünden Add/New Item penceresinden Windows Form seçilir. Solution Explorer(3): Proje dosyalarının listelendiği sekme. (View menüsünden açılır veya kapatılır.) Properties(4): Nesne özelliklerinin listelendiği sekme. (View menüsünden açılır veya kapatılır.) Her bir formun Design(5) ve Kod görünümleri(6) bulunur. Design görünümü Form1.cs[Design] projenin görüntülenen kısmı, Kod görünümü Form1.cs arka planda çalıĢan kodların bulunduğu kısımdır. BoĢ bir forma ait kod görünümü aĢağıdaki gibidir. using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { 3 InitializeComponent(); } } } C.ĠSĠM UZAYLARI 1.NameSpace Ġsim uzayları (namespace) program yazmanın en önemli parçasıdır ve daha çok yazılan kodların tekrar kullanılabilirliğini artırmak için geliĢtirilmiĢtir. Böylece hazır kodlar veya programcının daha önce oluĢturduğu isim uzayları yeni program içine dahil edilerek kullanılabilir. 2.Using Ġfadesi Hazır veya programcının oluĢturduğu namespace‟ler using ifadesi ile programa dahil edilir. 3.Nesne Ekleme Toolbox‟dan istenen nesneler sürükle bırak veya çift tıklama yoluyla forma eklenebilir. 5.Nesneye Kod Yazma Eknenen nesnenin Properties penceresinde Properties (1) düğmesi ile özelliklerine, Events (2) düğmesi ile olaylarına ulaĢılabilir. Örneğin button1 nesnesine tıklandığında yapılması istenen iĢlemler için Events bölümünden Click seçeneğine çift tıklanarak açılan kod penceresine istenen kodlar yazılır. D.DEĞĠġKENLER VE VERĠ TÜRLERĠ 1.DeğiĢken Tanımlama Kuralları Hazırlanmakta olan bir programda, hangi değiĢkenlerin kullanılacağını programı yazmadan önce planlanması önerilir. Fakat C# programlama dili kullanım sırasında tanımlamaya izin verir. DeğiĢkenlerin isimlendirilmesi de önemli bir konudur. Ġsimlendirme sırasında değiĢkenin kullanım amacını anlatan kısa bir isim kullanılmalıdır. Genel olarak baĢka isimlendirme kuralları Ģunlardır: Ġlk harf veya tamamı sayı olamaz. Mesela: “2nciYari” gibi olmaz. DeğiĢken ismi içinde “boĢluk, TAB, Enter” olamaz. Mesela “Soy Ad” gibi olmaz. Büyük küçük harfle yazım** fark eder. Mesela: “IlkNot” ile “ILKNOT” farklıdır. Dilin anahtar kelimeleri değiĢken adı olamaz. Mesela: “main, write” gibi… Türkçe ve özel karakterleri kullanmamaya çalıĢmalıyız. (Türkçe karakterler: ı,Ġ,Ģ,ġ,ç,Ç,ğ,Ğ,ö,Ö,ü,Ü) Mesela: “örütBağ” yerine “orutBag” gibi… Alt çizgi isimlendirmede kullanılabilir. Mesela: “taban_Ucret” gibi… 2.Temel Veri Türleri C# da iki çeĢit veri tipi vardır: Değer Tipleri (Value type) Referans Tipleri(Reference Type) Değer tipleri veriyi direk olarak bellek bölgesinden alırken referans tipleri içinde veri değil adres bilgisi tutarlar. NOT: Değer tipleri birbirine eĢitlenirken değiĢkenin barındırdığı değer bir diğer değiĢkene kopyalanır. Böylece iki farklı bağımsız değiĢken oluĢur. Referans tipleri ise eĢitleme sırasında değiĢkenlerin taĢıdıkları veri iĢaret ettikleri adres kopyalanır. Böylece eğer iki referans değiĢkeni birbirine eĢitlediyse ve daha sonra bunlardan 4 birinde bulunan veri değiĢtirilse ise otomatik olarak diğer referans değiĢkeninin değeri de değiĢir. Çünkü adreste bulunan veri değiĢince bu adresi iĢaret eden iki değiĢkende yeni veri bilgisine ulaĢır. C# da toplam 15 veri tipi vardır bunlardan 13 ü değer tipindedir, 2 si ise referans tipindedir. NOT: CTS, veri tipinin .NET için de kullanılabilen tüm dillerdeki ortak ismidir. Değer Tipleri (Value type) Bellekte Kapladığı Alan Max ve Min aralık ya da değeri C# Adı CTS KarĢılığı Açıklama sbyte System.Byte 8 bit iĢaretli tamsayı 1 Byte -128 : 127 short System.Int16 16 bit iĢaretli tamsayı 2 Byte -32.768 : 32.767 int System.Int32 32 bit iĢaretli tamsayı 4 Byte -2.147.483.648 : 2.147.483.647 long System.Int64 64 bit iĢaretli tamsayı 8 Byte -9.223.372.036.854.775.808 : 9.223.372.036.854.775.807 byte System.Byte 8 bit iĢaretsiz tamsayı 1 Byte 0 : 255 ushort System.UInt16 16 bit iĢaretsiz tamsayı 2 Byte 0 : 65.535 uint System.UInt32 32 bit iĢaretsiz tamsayı 4 Byte 0 : 4.294.967.295 ulong System.UInt64 64 bit iĢaretsiz tamsayı 8 Byte 0 : 18.446.744.073.709.551.615 float System.Single 32 bit tek kayan sayı 4 Byte +yada – 1,5*10-45 : + ya da – 3,4*1038 (virgülün sağında ve solunda 7 basamak) double Sytem.Double 64 bit çift kayan sayı 8 Byte +yada – 5*10-324 : + ya da – 1,7*10308 (virgülün sağında ve solunda 15-16 basamak) decimal System.Decimal 128 bit ondalıklı sayı 16 Byte +yada – 1,0*10-28 : + ya da – 7,9*1028 (virgülün sağında ve solunda 28-29 basamak) bool System.Boolean char System.Char Tek Karakter 2 Byte true ya da false 2 Byte 16 Unicode karakterleri Referans Tipleri(Reference Type) C# Adı CTS KarĢılığı Açıklama string System.String 16 Unicode karakter dizileri object System.Object Bütün veri türlerinin türediği kök eleman 3.DeğiĢken Tanımlama C# da değiĢkenler aĢağıdaki yapıda tanımlanırlar. <veri tipi><değişken adı>; Örnek: int sayi = 4; //sayi isimli ilk değeri 4 olan integer tipinde bir değişken tanımlandı. bool cevap; //cevap isimli bollean tipinde bir değişken tanımlandı. cevap = false; //cevap değişkeni içine false değeri aktarıldı. double yuzde = 98.32, ortalama = 35; //yuzde isimli ilk değeri 98.32 ve ortalama isimli ilk değeri 35 olan double tipinde bir değişken tanımlandı. char karakter = 'A'; //karakter isimli ilk değeri A olan char tipinde bir değişken tanımlandı. string sinif; //sinif isimli string tipinde bir değişken tanımlandı. sinif= “ATL10”; //sinif değişkenine ATL10 verisi aktarıldı. 5 Örnek: DeğiĢkene değer atama a = 5; //Doğru; a’nın değeri 5 olur a = a +5; //Doğru; a’nın eski değerine 5 eklenir a + 5 =a; //Hatalı! 5 = a; //Hatalı! a = a; //Gereksiz Örnek: Form üzerine 1 adet buton ve 13 adet label nesnesi yerleĢtiriniz. button1_Click olayına aĢağıdaki kodları yazınız. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { byte a = 255; 6 short b = 32767; //max değer int c = 21474836; long d = 9223372036854775807; float f = 7.1234568f; //max 7 basamak, 8. basamağı yuvarladı double g = 21212.3321; decimal h = 7.9000000000000000000000000000M; decimal i = 7.9E+28M; //max 29 basamak bool k = true; char m = 'A'; string n = "Cok çalışmam lazım çok"; object p = 123; object r = "Merhaba ASP"; object s = true; label1.Text = "Byte değişken:" + a; //değişkenler yazdırılıyor. label2.Text = "Short değişken:" + b; label3.Text = "Integer değişken:" + c; label4.Text = "Long değişken:" + d; label5.Text = "Float değişken:" + f; label6.Text = "Double değişken:" + g; label7.Text = "1. Decimal değişken:" + h; label8.Text = "2. Decimal değişken:" + i; label9.Text = "Boolean değişken:" + k; label10.Text = "Char değişken:" + m; label1.Text = "String değişken:" + n; label11.Text = "1. Object değişken:" + p; label12.Text = "2. Object değişken:" + r; label13.Text = "3. Object değişken:" + s; } } } NOT: Float veri tipindeki değiĢkene değer aktarımı için değerinin sonuna “F” karakteri, Decimal veri tipindeki değiĢkene değer aktarımı için değerinin sonuna “M” karakteri eklenmelidir. NOT: Char veri tipindeki değiĢkene değer aktarımı için değerinin sonuna „‟ (tek tırnak), Stiring veri tipindeki değiĢkene değer aktarımı için “” (çift tırnak) kullanılmalıdır. 4.Tip DönüĢümleri: Convert komutu ile veri türleri birbirine dönüĢtürülebilir. 7 Tip KarĢılığı Kullanımı Tip KarĢılığı Kullanımı bool Boolean Convert.ToBoolean() long Int64 Convert.ToInt64() byte Byte Convert.ToByte() ulong UInt64 Convert.ToUInt64() sbyte Sbyte Convert.ToSbyte() float Single Convert.ToSingle() short Int16 Convert.ToInt16() double Double Convert.ToDouble() ushort UInt16 Convert.ToUInt16() decimal Decimal Convert.ToDecimal() int Int32 Convert.ToInt32() char Char Convert.ToChar() uint UInt32 Convert.ToUInt32() 4.1. Parse() Kullanıcıdan bir değer alındığında (ġimdilik konsol ekranından, daha sonrası için masaüstü ve web uygulamalarında textBox gibi bir kontrolden olabilir) bu değerin istenilen değiĢkene doğru tipte atıldığının garanti edilmesi gerekir. Console.ReadLine() ile okunan veriler daha önce görüldüğü gibi her halükarda text tabanlı olacaktır ve doğrudan bir değiĢkene atılmak istenirse bu değiĢkenin tipi (eğer ekstra efor harcanmazsa) sadece string olabilir. Kullanıcıdan sayısal bir değer alınırsa, bu değer string tipinde bir değiĢken üzerinde taĢınabilir ve matematiksel bir iĢlemde kullanılamaz. { String fiyat; fiyat=textBox1.Text; int zamlifiyat=fiyat+15;//Derleme hatası } Çünkü toplama gibi bir matematiksel iĢleme sokulmaya çalıĢılan değiĢkenin değeri „15‟ olmasına rağmen veri tipi herhangi bir tamsayı ya da ondalık sayı değil bu sayının text tabanlı temsilini yapan „string‟ dir. Burada yapılması gereken; „15‟ verisini doğru tipte ele alabilmektir. Tam bu soruna yönelik bir çözüm vardır: Parse() metodu. Bu metot, doğru tipte ele alınması gereken önceden –tanımlı tipler üzerinden çağrılabilen (yukarıdaki senaryoda int üzerinden) bir üyedir. Bütün önceden tanımlı tiplerin Parse() metotları vardır. { String fiyat; fiyat=textBox1.Text; int zamlifiyat=int.parse(fiyat)+15; } Parse() metodu bütün önceden tanımlı tipler üzerinden çağrılabilir; hangi tip üzerinden çağrılmıĢsa verinin string temsilini, çağrıldığı tipe çevirir. Böylece verinin kendine özgü özelliklerinden faydalanılması sağlanmıĢ olur. E.OPERATÖRLER 1.Aritmetiksel Operatörler Programlama dili bilinen dört iĢlemin aritmetik iĢleçlerini destekler: Toplama(+), çıkarma(-), çarpma(*) bölme(/). Ayrıca % ile kalan veya mod iĢlemi yapılır. Tüm iĢleçler tüm veri türlerine uygulanamaz. Bir değer üzerinde kullanılabilecek iĢleçler, değerin türüne bağlıdır. Örneğin, char, int, long, float, double, ya da decimal veri türlerinde tüm aritmetik iĢleçleri kullanılabilir. Bununla birlikte string türü değiĢkenler üzerinde artı(+) iĢleci dıĢında aritmetik iĢleçler kullanılamaz. NOT: Aritmetik iĢlem sonucundaki değer türü, kullanılan iĢlenenler türüne bağlıdır. Örneğin, 5.0/2.0 ifadesinin 8 değeri 2.5‟tir. Her iki iĢlenenin türü double‟dir bu nedenle sonuç türü de double‟dir.5/2 ifadesinde her iki iĢlenen de int türünde ise sonuçta int türünde olacak ve sonuç 2 olacaktır. Bu gibi durumlarda her zaman değerleri aĢağıya yuvarlanır. 2.Atama Operatörü Atama iĢlemleri = iĢareti ile yapılır. ĠĢaretin sağ tarafındaki değer, sol tarafa depolanır. a = 5; //Doğru; a’nın değeri 5 olur a = a +5; //Doğru; a’nın eski değerine 5 eklenir a + 5 =a; //Hatalı! 5 = a; //Hatalı! a = a; //Gereksiz 3.Artırma ve Azaltma Operatörleri sayac = sayac +1; //sayac++ veya ++sayac sayac = sayac -1; //sayac-- veya --sayac ++ veya -- iĢleçleri, değiĢkenden önce ve sonra kullanılabilir. sayac++; //sonek artırma ++sayac; //önek artırma sayac--; //sonek azaltma --sayac; //önek azaltma ĠĢleçlerin değiĢkenden önce ve sonra kullanılması sonucu değiĢtirmez. Her durumda değiĢkenin değeri 1 artırılır ya da 1 azaltılır ama iĢlem öncelik sırasından kaynaklanan farklılıklar doğabilir. Örnek: private void button3_Click(object sender, EventArgs e) { int a; a= Convert.ToInt32(textBox1.Text); label1.Text = "a++: " + Convert.ToInt32(a++); a = Convert.ToInt32(textBox1.Text); label2.Text = "++a: " + Convert.ToInt32(++a); } Diğer iĢlemler için: ĠġLEM AÇIKLAMA YERĠNE a=a+5 a değiĢkeninin değeri 5 artırılıyor. a+=5 a=a-b a değiĢkeninin değeri b değiĢkeni kadar azaltılıyor. a-=b a=a*c a değiĢkeninin değeri c değiĢkeni katına çıkarılıyor. a*=c a=a/5 a değiĢkeninin değeri 5‟e bölünüyor. a/=5 9 MODÜL 2:NESNE TABANLI PROGRAMLAMADA KARAR VE DÖNGÜ YAPILARI A.ĠLĠġKĠSEL VE MANTIKSAL OPERATÖRLER 1.ĠliĢkisel Operatörler KarĢılaĢtırma iĢlemlerinde kullanılan operatörlerdir. == operatörü: Verilen iki ifadenin eĢit olup olmadığını != operatörü: Verilen iki ifadenin farklı olup olmadığını < operatörü: Verilen birinci ifadenin ikinci ifadeden küçük olup olmadığını > operatörü: Verilen birinci ifadenin ikinci ifadeden büyük olup olmadığını >= operatörü: Verilen birinci ifadenin ikinci ifadeden büyük veya eĢit olup olmadığını <= operatörü: Verilen birinci ifadenin ikinci ifadeden küçük veya eĢit olup olmadığını anlamak için kullanılır. Sonuç TRUE (doğru) veya FALSE(yanlıĢ) değerini alır. 2.Mantıksal Operatörler Temel olarak “True – Evet” ve “False – Hayır” mantıksal değerlerini alabilen değerler üzerinde iĢlem yapmamızı sağlar. &&(Ve - And) operatörü: Logic iki ifadenin'de doğru olması gereklidir. Ifade1 Ifade2 Sonuç=Ifade1 && Ifade2 False False False False True False True False False True True True ||(Veya - Or) operatörü: Logic Ġki ifadeden yalnızca birinin doğru olması yeterlidir Ifade1 Ifade2 Sonuç=Ifade || Ifade2 False False False False True True True False True True True True !Not operatörü : Logic bir ifadenin değilinin alınması için kullanılır. Ifade ! Ifade True False False True Örnek: private void button1_Click(object sender, EventArgs e) { int a = Convert.ToInt32(textBox1.Text); int b = Convert.ToInt32(textBox2.Text); label1.Text=Convert.ToString(a > b); } private void button2_Click(object sender, EventArgs e) { 10 int a = Convert.ToInt32(textBox1.Text); int b = Convert.ToInt32(textBox2.Text); label2.Text = Convert.ToString(a == (2 - b)); } private void button3_Click(object sender, EventArgs e) { int a = Convert.ToInt32(textBox1.Text); int b = Convert.ToInt32(textBox2.Text); label3.Text = Convert.ToString((a > 0) && (b <= 8)); } private void button4_Click(object sender, EventArgs e) { int a = Convert.ToInt32(textBox1.Text); int b = Convert.ToInt32(textBox2.Text); label4.Text = Convert.ToString((a > 0) || (b <= 8)); } 3.Operatör Önceliği Kategori Operatör Açıklama Birincil () ,++, -- Parantez Artırma Azaltma Çarpımsal *, /, % Çarpma Bölme Kalanı Bulma Toplamsal +,- Toplama Çıkarma KarĢılaĢtırma <, <=, >, >= Küçük Küçük veya eĢit Büyük Büyük veya eĢit EĢitlik =, != EĢit, EĢit değil KoĢullu mantıksal &&, || Mantıksal AND Mantıksal OR NOT: Aynı önceliğe sahip operatörlerde ise soldaki önceliklidir. B.ġART ĠFADELERĠ 1.If Ġfadesi a.If kullanımı: if (şart) if (şart) { komut komutlar } ġart doğru ise komut veya komutlar çalıĢır. b.If..else kullanımı: if (şart) if (şart) { komut //1.bölüm Komutlar //1.bölüm else } komut //2.bölüm else 11 { Komutlar //2.bölüm } ġart doğru ise birinci bölümdeki komutlar, Ģart yanlıĢ ise ikinci bölümdeki komutlar Örnek: Buttona basıldığında, text içine girilen sayı negatif ise SAYI NEGATĠFTĠR mesajını görüntüleyen programı yazınız. private void button1_Click(object sender, EventArgs e) { int s = Convert.ToInt32(textBox1.Text); if (s < 0) MessageBox.Show("NEGATİF"); else MessageBox.Show("POZİTİF"); } 2.Ġçi Ġçe If Ġfadesi Benzer durumları kontrol eden birkaç if deyimi iç içe yazılarak, programın daha hızlı ve verimli çalıĢması sağlanır. Örnek: 3 adet text kutusuna girilen 2 sınav puan ve 1 sözlü puanına göre ortalama puanı ve notunu bulan program. private void button2_Click(object sender, EventArgs e) { double n1 = Convert.ToDouble(textBox1.Text); double n2 = Convert.ToDouble(textBox2.Text); double s = Convert.ToDouble(textBox3.Text); double ort; ort = (n1 + n2 + s) / 3; label4.Text = "Puan Ortalaması: " + String.Format("{0:00.0}",ort); if (ort < 25) label5.Text = "Not: 0"; else if (ort<45) label5.Text = "Not: 1"; else if (ort < 55) label5.Text = "Not: 2"; else if (ort < 70) label5.Text = "Not: 3"; else if (ort < 85) label5.Text = "Not: 4"; else label5.Text = "Not: 5"; } 4.Switch Ġfadesi Çok sayıda ihtimal varsa, hepsini “IF” komutu ile yapmak programı karmaĢık hale getirir. Bu tür durumlar için “Switch – Case” komutu kullanmak hem program yazımını kolaylaĢtırır hem de programın okunurluğunu arttırır. switch(kontrol ifadesi) { case değer1: blok1;break; case değer2: 12 blok2;break; ... default: blok; } Örnek: Switch ile okul kat planı Form üzerinde Blok ve Katı seçmek için 2 adet combobox, kat planını görüntülemek için bir adet listbox kullanılarak yandaki form tasarlanır. Blok seçimi yapılacak combobox1 nesnesinin Items özelliğine, A, B, C, E, G değerleri eklenir ve Text özelliğine A yazılır. Kat seçimi yapılacak combobox2 nesnesinin Items özelliğine, Zemin, 1, 2, 3 değerleri eklenir ve Text özelliğine Zemin yazılır. Buton içine aĢağıdaki kodlar yazılır. private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear();//Varsa daha önceki seçime ait planı siler. switch (comboBox1.Text) //Blok seçimine göre { case "A": switch (comboBox2.Text) //Kat seçimine göre { case "Zemin": listBox1.Items.Add("Kantin"); listBox1.Items.Add("Kalorifer dairesi"); break; case "1": listBox1.Items.Add("Öğretmenler Odası"); listBox1.Items.Add("İdaresi Odaları"); listBox1.Items.Add("Memur Odaları"); break; case "2": listBox1.Items.Add("Sınıflar"); listBox1.Items.Add("Bilgisayar Laboratuarı"); break; case "3": listBox1.Items.Add("Sınıflar"); listBox1.Items.Add("Fen Laboratuarı"); break; } break; case "B": switch (comboBox2.SelectedText) { case "Zemin": listBox1.Items.Add("Ahşap Teknolojisi Atölyeleri"); listBox1.Items.Add("Metal Teknolojisi Atölyeleri"); 13 listBox1.Items.Add("Tesisat ve İklimlendirme Teknolojisi Atölyeleri"); listBox1.Items.Add("Motor Teknolojisi Atölyeleri"); break; default: listBox1.Items.Add(comboBox1.Text+" blokta" + comboBox2.Text + ". kat yoktur."); break; } break; case "C": switch (comboBox2.SelectedText) { case "Zemin": listBox1.Items.Add("Makine Teknolojisi Atölyeleri"); break; case "1": listBox1.Items.Add("Elektirik Teknolojisi Atölyeleri"); break; default: listBox1.Items.Add(comboBox1.Text+" blokta" + comboBox2.Text + ". kat yoktur."); break; } break; case "E": switch (comboBox2.SelectedText) { case "Zemin": listBox1.Items.Add("İdareci Odaları"); listBox1.Items.Add("Sınıflar"); break; case "1": listBox1.Items.Add("Öğretmenler Odası"); listBox1.Items.Add("İdareci Odası"); listBox1.Items.Add("Sınıflar"); break; case "2": listBox1.Items.Add("Bilişim Teknolojileri Bilgisayar Laboratuarları"); listBox1.Items.Add("Sınıf"); break; default: listBox1.Items.Add(comboBox1.Text+" blokta" + comboBox2.Text + ". kat yoktur."); break; } break; case "G": switch (comboBox2.SelectedText) { 14 case "Zemin": listBox1.Items.Add("Sınıflar"); break; case "1": listBox1.Items.Add("Sınıflar"); break; case "2": listBox1.Items.Add("Sınıflar"); listBox1.Items.Add("Öğretmenler Odası"); break; default: listBox1.Items.Add(comboBox1.Text+" blokta" + comboBox2.Text + ". kat yoktur."); break; } break; } } C.DÖNGÜ YAPILARI 1.While Ġfadeleri Bir koĢula bağlı olarak (koĢul sonucu true olduğu sürece) bir takım kodlamaları tekrar tekrar çalıĢtırmak için kullanılan döngüsel yapıdır. while(şartlı ifade) { komutlar; } Örnek: Form üzerinde 1-20 arasındaki sayılar (button1), 30-5 arasındaki 5‟in katı olan sayılar ve toplamı(button2), Ġki sayı arasındaki sayılar (button3), 0 girilene kadar sayı giriĢi (button4), 0 girilene kadar girilen çift saylar ve toplamı (button5) düğmelerine basıldığında istenen iĢlemi listbox içine yazan program. NOT: button4 ve buton5 için giriĢ kutusu(InputBox) kullanılması gerekir. Bunun için öncelikle using Microsoft.VisualBasic namespace‟i eklenir. int s1=0, s2=0; private void button1_Click(object sender, EventArgs e) { //1-20 arasındaki sayılar s1 = 1; while (s1 <= 20) listBox1.Items.Add(s1++); } private void button2_Click(object sender, EventArgs e) { //30-5 arasındaki 5’in katı olan sayılar ve toplamı s1 = 30; 15 while (s1 >= 5) { s2 += s1; listBox1.Items.Add(s1); s1 -= 5; } listBox1.Items.Add("---"); listBox1.Items.Add(s2); } private void button3_Click(object sender, EventArgs e) { // İki sayı arasındaki sayılar s1 = Convert.ToInt32(textBox1.Text); s2 = Convert.ToInt32(textBox2.Text); while (s1 <= s2) listBox1.Items.Add(s1++); } private void button4_Click(object sender, EventArgs e) { //0 girilene kadar sayı girişi s1 = 1; while (s1 != 0) { s1 = Convert.ToInt32(Interaction.InputBox("Bir Sayı Giriniz", "Giriş")); listBox1.Items.Add(s1); } } private void butto5_Click(object sender, EventArgs e) { //0 girilene kadar girilen çift saylar ve toplamı s1 = 1; while (s1 != 0) { s1 = Convert.ToInt32(Interaction.InputBox("Bir Sayı Giriniz", "Giriş")); if ((s1 % 2 == 0) && (s1 != 0)) { listBox1.Items.Add(s1); s2 += s1; } } listBox1.Items.Add("---"); listBox1.Items.Add(s2); } 2.For Ġfadeleri Tıpkı while gibi bir döngü yapısıdır. while döngüsünden en belirgin farkı, döngünün baĢlama, bitiĢ ve denetim değiĢkeni güncellemesinin döngü baĢında yapılmasıdır. Bu nedenle de döngünün baĢlangıç ve bitiĢ değeri belli 16 ise genelde bu döngü kullanılmaktadır. for ifadesinin söz dizimi Ģu Ģekildedir: for (başlangıç değeri; bitiş değeri (koşul); sayaç değişkeni güncellemesi) { komutlar; } Örnek: Yukarıdaki örnekte ilk üç butona ait iĢlem for döngüsü kullanılarak yapılmak istenseydi: int s1=0, s2=0, k; private void button1_Click(object sender, EventArgs e) { //1-20 arasındaki sayılar for(k=1;k<=20;k++) listBox1.Items.Add(k); } private void button2_Click(object sender, EventArgs e) { //30-5 arasındaki 5’in katı olan sayılar ve toplamı for(k=30;k>=5;k-=5) { listBox1.Items.Add(k); s1+=k; } listBox1.Items.Add("---"); listBox1.Items.Add(s2); } private void button3_Click(object sender, EventArgs e) { // İki sayı arasındaki sayılar s1 = Convert.ToInt32(textBox1.Text); s2 = Convert.ToInt32(textBox2.Text); for(k=s1;k<=s2;k+=1) { listBox1.Items.Add(k); } } 3.Do Ġfadeleri While ve for ifadelerinin her ikisinde de koĢul (boolean ifade) döngünün hemen baĢında sorgulanmaktadır. Dolayısıyla belirtilen koĢul, true değerini üretmezse döngüdeki kodlar iĢletilmeyecektir. Oysa do ifadesinde durum farklıdır. do ifadesinde koĢul (boolean ifade) döngünün sonunda verilmektedir. Bu durum döngünün en az bir defa mutlaka iĢletileceği anlamına gelmektedir. do { Komutlar; } While (koşul – boolean ifade) 4.Break Ġfadeleri Döngülerde çok fazla tavsiye edilmemesine rağmen özel durumlarda ihtiyaç hâlinde kullanılabilecek ifadelerdir. 17 Break komutu, döngüden çıkmak için kullanılan bir komuttur. ĠĢleyiĢ, döngüden sonraki komuttan devam edecektir. Örnek: Form üzerinde bulunan iki text arasındaki sayı toplamını 1000‟den büyük olduğu anda duracak Ģekilde çalıĢmasını sağlayan kodlar. private void button1_Click(object sender, EventArgs e) { int s1 = Convert.ToInt32(textBox1.Text); int s2 = Convert.ToInt32(textBox2.Text); int k,t = 0; for (k = s1; k <= s2; k++) { t += k; if (t > 1000) break; } MessageBox.Show(Convert.ToString(t)); } D.DiYALOG KUTULARI 1.MessageBox Kullanımı Kullanıcıya bir pencerede mesaj vermek veya düğme yardımıyla kullanıcıdan aldığı yanıta göre iĢlem yapmak amacıyla kullanılır. MessageBox.Show("Mesaj",["Başlığı"], [Kutu özellikleri]); NOT: [] ile belirtilen bölümlerin kullanımı isteğe bağlıdır. Kutu özellikleri: MessageBoxButtons.AbortRetryIgnore: Ġptal Et, Tekrar Dene, Yoksay düğmelerini, MessageBoxButtons.OK: Tamam düğmesini, MessageBoxButtons.OKCancel: Tamam veya Ġptal düğmelerini, MessageBoxButtons.RetryCancel: Tekrar Dene veya Ġptal düğmelerini, MessageBoxButtons.YesNo: Evet, Hayır düğmelerini, MessageBoxButtons.YesNoCancel : Evet, Hayır, Ġptal düğmelerini çıkarır. MessageBoxIcon.Error: Hata iĢareti(kırmızı üzerine x Ģeklinde) MessageBoxIcon.Exclamation: Ünlem iĢareti (Sarı üçgen üzerine) veya MessageBoxIcon.Warning MessageBoxIcon.Information: Bilgi(Mavi üzerine ünlem) MessageBoxIcon.Question: Soru iĢareti ikonu ile görüntülenir. MessageBoxDefaultButton.Button1: Hangi butonun seçili olacağı belirlenir. NOT: DialogResult ile basılan düğmenin kontrolü yapılabilir. Örnek: private void button1_Click(object sender, EventArgs e) { DialogResult cev=MessageBox.Show("İşleminiz Yapılıyor", "Bilgi", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); //verilen yanıt cev değişkeni içine aktarılıyor. if (cev == DialogResult.OK) //Tamam düğmesine basıldıysa MessageBox.Show("Tamam düğmesine basıldı."); } 18 2.InputBox Kullanımı Bir VisualBasic komutu olan InputBox, using Microsoft.VisualBasic komutu ile VisualBasic namespace‟inin projeye eklenerek, bu isim uzayı içindeki sınıflardan biri olan Interaction.InputBox‟ın kullanılmasını sağlar. Kullanıcıdan bir pencere yardımıyla değer isteme amacı ile kullanılır. String degisken_adi= Interaction.InputBox("Mesaj", ["Başlık"], ["Varsayılan değer."], [Ekranda açılacağı yerin x koordinatı], [Ekranda açılacağı yerin y koordinatı]); E.HATA AYIKLAMA 1.Try-Catch Bloğu a.Birden Çok Catch Bloğu b.Denetlenmiş İfadeler c.Denetlenmiş Deyimler d.Özel Durumlar e.Finally Bloğu 2.Adım Adım Ġzleme Debug menüsünden Step Into(F11) veya Step Out komutları (Shift+F11) ile programın adım adım izlenerek varsa mantıksal hataların bulunması sağlanır. Bu iĢlem öncesinde programın baĢlangıç noktasına veya adım adım izlenecek bölümün baĢına BreakPoint yerleĢtirilmelidir. Böylece program iĢaretlenen satıra kadar normal çalıĢır ve bekler, sonraki komutlar adım adım izlenebilir. Herhangi bir satıra BreakPoint yerleĢtirmek için satırın en baĢına fare ile tıklanarak kırmızı yuvarlak bir iĢaretin oluĢması sağlanır. Daha sonra adım adım izleme iĢlemi tümalt programların da içine girerek yapılacaksa Step Into(F11), alt programlar içine girmeden yapılıp sonraki adıma geçilecekse Step Out(Shift+F11) 19 MODÜL 3:NESNE TABANLI PROGRAMLAMADA WINDOWS UYGULAMALARI A.WĠNDOWS FORMLAR 1.Windows Form Uygulaması OluĢturma C# „ da formlara uygulamasını dayalı program kullanabiliriz. Bu yazmak uygulamanın için adı Microsoft da Windows Windows Forms Application‟dır. Visual Studıomuzu açıp New Project‟e tıkladıktan sonra Visual C#‟ı onaylayıp Windows Forms Application‟ ı seçeriz. KarĢımıza yandaki pencere çıkar. 2.Windows Form Özellikleri Formun biçimlendirmesini, yani isim ve sitil değiĢikliklerini özellikler penceresinden (properties) yapabiliriz. Formun özelliklerini değiĢtirmek için öncelikle form üzerine bir kere tıklamamız gerekir. Yani form nesnesini seçili duruma getirmiĢ oluyoruz. NOT: formun özelliklerini kod ile de değiĢtirebiliriz. C#‟da çalıĢılan form This komutu ile temsil edilir. Örneğin formun rengi değiĢtrilmek istendiğinde yazılıcak komut satırı This.BackColor=Color.Red; „tir. Name : Burası Formumuza isim verir yani default olarak ayarlı olan form1 yerine dilediğimiz ismi vermemizi sağlar. AcceptButton : Burası projemizi çalıĢtırdığımızda enter tuĢuna basılınca tetiklenmesini istediğimiz butonu temsil eder. AllowDrop : Burası forma sürükle bırak yöntemi ile bir Ģeyler eklemek istersek true yapılması gereken özelliktir. AutoScaleMode : Bilgisayarımızın ekran çözünürlüğünün deĢiĢtirilmesi durumunda nasıl davranacağını belirtir. AutoScroll : Eklediğimiz controlün form penceresine sığmaması durumunda scrollbar eklenme durumunu belirtir. true seçeilirse eklenir. AutoScrollMargin : Auto scroll true yapılmıĢsa yandakinin yüksekliğini alttakinin geniĢliğini integer değer alarak belirtir. değer girilmezse controllerin bittiği yere kadar kayma sağlar. AutoScrollMinumuSize : Bi öncekine benzer bir özelliktir ve kontrollerimiz formumuza sığsa bile belirtilen width ve height kadar scroll boyut kazanarak kayma sağlar. AutoSize : Forma eklenen kontroller forma sığmıyorsa otomatik olarak form penceresinin ebatlarının artmasını sağlayan özelliktir. AutoSizeMode : Ġki seçenek sunar. Default olarak ayarlı olan GrowOnly projemiz çalıĢırken form boyutunu değiĢtirmemize izin verir. GrowAndShrink seçilirse çalıĢma anında form penceresinin boyutlarının değiĢimine izin vermez. BackColor : Formumuzun arka plan rengini değiĢtirmemizi sağlar. BackgrounImage : Formumuzun arka planına resim eklememizi sağlayan özelliğidir. BackgrounImageLayout : Default ayarı Tile olarak gelen bu özellik; eklediğimiz arkaplan resminin forma sol üstten baĢlayarak sığacak kadar olan kısmını göstermesini, Center; resim formdan küçük ise formu ortalayacak 20 Ģekilde görünmesini, Stretch; resmin forma tam sığacak Ģekilde boyutlanarak görünmesini, Zoom ise resmin orjinal boyutunu koruyarak sığacak Ģekilde görünmesini sağlar. CancelButton : ÇalıĢma esnasında esc tuĢuna basıldığında tetiklenmesini istediğimiz butonu seçmemizi sağlar. CausesValidation : Default olarak true olan bu özellik Validatorlerin devreye girmesini sağlıyo. ContextMenuStrip : Formumuza ait bir contextMenüStrip varsa ve bu seçenekte onu belirtirsek çalıĢma esnasında form üzerinde sağ tıkladığımızda açılmasını sağlar. ControlBox : Formun sağ üst köĢesinde bulunan kapat-küçült-simgedurumu butonlarını kaldırmayı sağlar. Cursor : Mouse'nin form üzerinde nasıl görünmesini istersek buradan seçebiliriz. DoubleBuffered : Bu özellik formumuz üstüne çizilmiĢ bir resim varsa onun titremesini giderir. Enabled : Formumuz üzerine eklenmiĢ kontrollerin(button, textbox vs.) aktif yani kullanılabilir olmasını yada olmamasını sağlar. Font : Bu özellik ile form üzerine eklenen kontrollerin yazı fontunu ayarlamayı sağlar. ForeColor : Form üzerine eklenen kontollerin yazı rengini ayarlamamızı sağlar. FormBorderStyle : Formumuzun çerçeve stilini değiĢtirmemizi sağlar. Burda söylemek istediğim ekstra ufak birĢey: eğer bu seçeneği SizableToolWindow yaparsak formumuz görev çubuğunda ve pencere geçiĢlerinde görünmez ;) HelpButton : BaĢlık çubuğuna help buttonu eklemeyi sağlar. Icon : Formumuzun sol üst köĢesindeki iconu değiĢtirmemizi sağlar. ImeMode : Bu özellik formumuzda çince, japonca, korece gibi dillerin karakterlerinin desteğini sağlar. Ayarların detayları için eĢsiz kütüphane: http://msdn.microsoft.com/trtr/library/system.windows.forms.imemode.aspx adresini inceleyebilirsiniz. IsMdiContainer : Burası ise mdi özelliğini belirler yani ana form içinde yeni formlar açılmasını sağlar ana formumuza eklediğimiz yeni formların MdiParent' i this yani ana formumuz olarak ayarlanmalıdır. Ġleriki konularda bir MdiForm uygulama örneği yapılacaktır ama ön bilgi olarak Ģu örneği verebilirim. PhotoShop programında bir kaç tane farklı çalıĢma açabiliyoruz ve bunların hepsi PhotoShop'un ana penceresinin içinde açılıyor yani bu pencere dıĢına çıkarılaamıyor öyle düĢünebiliriz. KeyPreview : bu özellik false iken form üzerindeki kontrollerimizden hangisi focus ise onun keypres eventi yada istenilen herhangi bir key eventi çalıĢır. ama bu özelliği true yaparsak focuslanan kontrolden önce formumuzun istediğimiz key eventini tetikleyebiliriz. Language : Formumuzun dilini seçer. Formumuzun kontrollerini farklı dillere göre uyarlayabiliriz. Default seçilirse sistemin kurulu olduğu dili seçer. Locked : Default olarak false olan bu özellik true yapılırsa form' umuz tasarım anında ve çalıĢma anında çalıĢtığı yere sabitlenir. Boyunu ve yerini değiĢtirmeye izin vermez. MainMenuStrip : Menü strip ekliyse bunlardan hangisinin formumuzun ana menüsü olacağını seçmemizi sağlar. MaximizeBox : Sağ üstte bulunan simge-küçült/büyült-kapat butonlarından küçült/büyült olanını deaktif yapmayı sağlar. MaximumSize : Formumuzun maximum alabileceği boyutları ayarlamamızı sağlar. MinimizeBox: Yine sağ üstte bulunan simge durumuna küçültme ve boyutunu küçültme yapan butonları kaldırmayı sağlar. MinimumSize : Formumuzun minumum alabileceği boyutları ayarlamamızı sağlar. Opacity : Formumuzun saydamlığını ayarlamamızı sağlar. %100 ise tam görünür ve düĢürdükçe saydam hale gelir. Padding : Forma eklenen controllerin formun kenarlarına olan uzaklık referansını verir. Örneğin Left değerini 50 verdiğimizde; forma control sürüklerken control soldan 50px değerinde olduğunda bunu belirten bir referans 21 çizgisi çıkar. RightToLeft : Formun Textini sağa yada sola almayı sağlar. RightToLeftLayout : RightToLeft ile beraber kullanılır ve formun sağ üstte bulunan kapat küçült simge butonlarını sola alır. Bu özellik genellikle sağdan sola yazılan diller için kullanılır. ShowIcon : Formun textinin yazdığı yerdeki iconu gizlemeyi/göstermeyi sağlar. ShowInTaskbar : Form çalıĢtığında görev çubuğunda gözüküp gözükmeyeceğini ayarlamayı sağllar. Size : Formun boyutlarını elle girmeyi sağlar. SizeGripStyle : Formun sağ alt köĢesinde boyutlandırılabileceğini gösteren üçgeni göstermeyi sağlar. StartPosition : Formun çalıĢtığında ekranın neresinde olacağını belirlemeyi sağlar. Manual: Locationda belirlenen yerde formu açar. CenterScreen: Ekranın tam ortasında formu açar. WindowsDefaultLocation: Size‟da belirlenen boyutta ĠĢletim sisteminin varsayılan konumunda formu açar. WindowsDefaultBounds: ĠĢletim sisteminin varsayılan boyut ve konumunda formu açar. CenterParent: Bu özellik ebeveyn form kullanımında geçerlidir. Form ebeveyn formun merkezinde açılır. Tag : Formumuzun arkada tutacağı etiketi verir. Burada object olarak değerler tutulabilir ve get ve set edilebilir. Text : Burası formun üstteki yazısını değiĢtirmemizi sağlar. TopMost : Burası true yapıldığında formumuz açık olan tüm pencerelerin veya programların önünde olmayı sağlar. TransparencyKey : Burada seçeceğimiz renk ile formumuzda o seçtiğimiz renkte olan alanları transparan yapar. UseWaitCursor : Cursorun form üzerine geldiğinde bekleme iconunu kazanmasını sağlar. WindowState : Formumuzun açılıĢta ayarlandığı boyutta veya simge durumunda veya tam ekran olarak açılmasının seçimini sağlar. Normal: Program çalıĢınca formu belirlenen boyut ve yerde gösterir. Minimized: Program çalıĢınca formu simge durumuna küçültülmüĢ olarak baĢlatır. Maximized: Program çalıĢınca formu ekranı kaplamıĢ olarak baĢlatır. 3.Nesneler 3.1. Buton Text Özelliği: Button‟un üzerindeki metinle ilgili iĢlemler yapılır. private void button1_Click(object sender, EventArgs e) { button1.Text = "Tıklandı"; } Yukarıdaki örnekte formda bir adet buton bulunmaktadır. Buton çift tıklatılıp yukarıdaki kod yazıldığında butonun text‟i Tıklandı olarak değiĢir. backcolor Özelliği: Button‟un arkaplan rengi ilgili iĢlemler yapılır. private void button1_Click(object sender, EventArgs e) { button1.BackColor = Color.Blue; } Enabled Özelliği: Button‟un aktif veya pasif yapar. true ise aktif , false ise pasiftir. private void button1_Click(object sender, EventArgs e) 22 { button1.Enabled = False; } visible Özelliği: Button‟un görünmezliği ilgili iĢlemler yapılır. true ise görünür,false ise görünmez. private void button1_Click(object sender, EventArgs e) { button1.Visible = false; } forecolor Özelliği: Button‟un yazı rengi ile ilgili iĢlemler yapılır. private void button1_Click(object sender, EventArgs e) { button1.ForeColor = Color.Red; } AcceptButton Özelliği: Aktif formda Enter tuĢuna basıldığı zaman hangi butonun çalıĢacağını belirtir. Form seçili iken properties‟ten AccepButton özelliğinden Enter‟e basınca hangi butonun çalıĢmasını istiyorsak açılır menüden o butonu seçiyoruz veya kodlarla aĢağıdaki gibi yapabiliriz. CancelButton Özelliği: Aktif formdaEsc tuĢuna basıldığı zaman hangi butonun çalıĢacağını belirtir.Form seçili iken properties‟ten AccepButton özelliğinden Esc‟ye basınca hangi butonun çalıĢmasını istiyorsak açılır menüden o butonu seçiyoruz veya kodlarla aĢağıdaki gibi yapabiliriz. Örnek: Kodlarla atama iĢlemi aĢağıdaki Ģekildedir. Form‟un load‟na yazmamın sebebi form çalıĢtığı anda kodlar uygulansın diye. private void buton3_Load(object sender, EventArgs e) { AcceptButton = button1; CancelButton = button2; } Yukarıdaki örnekte formumuzun name‟i buton3 „tür. Yukarıdaki kodu form seçiliyken F7‟ye basarak açılan pencereye yazmalıyız. Önemli Not: Yukarıda kodlar ile yaptığımız iĢlemlerin çoğunu nesneyi seçerek properties penceresindende yapabilirsiniz. 3.2. Label Kullanıcıya form üzerinde bilgi vermek için kullanılır. Bu nesneye kullanıcı tarafından bilgi girmek dıĢında text kutusuna çok benzer. • Text özelliği ile içindeki bilgilerin yerleĢimi TextAlignözelliği ile belirlenebilir. • Image özelliği ile Label içerisinde resim gösterilebilir. • ImageAlign özelliği ile resmin yerleĢmini belirleyebilirsiniz. • ImageList ve ImageIndex özellikleri ilede resim gösterilebilir. • Bu kontrolün önemli özelliklerinden biri AutoSizeözelliğidir. Bu özellik normalde false dir. BackColor : Tahmin edebileceğiniz gibi Label‟ın arka plan rengini ayarlar. BorderStyle : Label‟ın kenarlarının nasıl olacağını belirler. Font : Font‟unu ayarlamamıza yarar. Boyut, yazı tipi gibi özellikleri barındırır. Örnek: textbox‟a yazılan değeri label‟a aktaran kodu yazınız. private void textBox1_TextChanged(object sender, EventArgs e) { label1.Text = textBox1.Text.ToString(); } Yukarıdaki kodun textbox‟a çift tıklandığında açılan pencereye yazıldığını unutmayalım. Örnek: Ģimdi textbox‟a yazılan değeri butona basıldığında label‟a aktaran kodu yazılım. private void button1_Click(object sender, EventArgs e) 23 { string kelime; kelime = textBox2.Text; label2.Text = kelime; //label2.Text = textBox2.Text; //Kısa olarak yukarıdaki kodda yazılabilir. } 3.3. TextBox TextBox kullanıcıdan bilgi giriĢi gereken programlarımızda bu kontrolü sağlamak için kullandığımız nesnemizdir. MultiLine özelliği ile birden fazla satır giriĢi sağlanabilir. Bilgi değiĢikliğinde iĢlem yapılması istendiğinde TextChanged olayı kullanılır. Text kutusu içindeki yazıların tümü aynı Font özelliğine sahiptir. Text Özelliği: textBox‟ta bulunan metinle ilgili iĢlemlerde kullanılır. Örnek: textbox1‟deki yazıyı textbox2‟ye ve label1‟e yazdıralım. private void button1_Click(object sender, EventArgs e) { textBox2.Text = textBox1.Text; label1.Text = textBox1.Text; } Clear Özelliği: textBox‟ı temizlemek için kullanılır. private void button2_Click(object sender, EventArgs e) { textBox2.Clear();// yada textBox2.Text=””; } backcolor Özelliği: textBox‟ın arka plan rengi ile ilgili iĢlemler yapılır. private void button3_Click(object sender, EventArgs e) { textBox2.BackColor = Color.Gray; } PasswordChar Özelliği: textbox‟ın belirli bir karakterle yazılmasını sağlar. ġifre giriĢlerinde kullanılır. Mesela Ģifre giriĢlerinde karakterler gözükmez. Karakterler yerine yıldız iĢaretini görürüz. ĠĢte bu iĢlemi bu özellik sayesinde belirleriz. Burada dikkat edilecek nokta aĢağıdaki komut satırının formun yükleme bölümüne yazılmasıdır. private void sifrekontrol_Load(object sender, EventArgs e) { textBox2.PasswordChar=(char)42; } 24 MultiLine Özelliği: Yazım iĢlerini birden fazla satırda yapmak için kullanılır. textBox‟ın üst sağındaki küçük ok‟a tıklayın ve MultiLine‟ı seçin. MaxLength Özelliği: textBox‟a maksimum kaç karakter girileceğini belirler. private void sifrekontrol_Load(object sender, EventArgs e) { textBox2.MaxLength = 10; } CharacterCasing özelliği: Bu özellik sayesinde textbox içresindeki değerlerin büyük ya da küçük olması sağlanır. Özellikle veriler veri tabanına kaydedilirken tüm verilerin küçük karakter yazılması kolaylığını sağlar. private void Form1_Load(object sender, EventArgs e) { textBox1.CharacterCasing = CharacterCasing.Lower; } 3.4. CheckBox Checkbox birçok seçenek arasından bir veya daha fazla seçim yapmamızı sağlayan araçtır. Mesela ilgi alanlarınızı sorduğumuzda bir yada daha fazla ilgi alanınız olabilir bunun gibi çoklu seçim yaptırmak istediğimiz yerlerde checkbox nesnesini kullanırız. Text Özelliği: checkBox‟ın yanındaki metinle ilgili iĢlemler yapılır. Yandaki örnekte tıkla butonuna basıldığında checkBox‟ın texti label1‟ yazılacak. private void button1_Click(object sender, EventArgs e) { label1.Text = checkBox1.Text; } Burada dikkat edilecek nokta checkBox‟ın seçili olmasının gerekmediğidir. Checked Özelliği: checkBox‟ın en önemli özelliğidir. checkBox‟ın seçili olup olmadığı ile ilgili iĢlemler yapılır. True ise seçili, false seçili değildir. Örnek: Girilen ürün fiyatı ve kdv‟ye göre ödenecek tutarı hesaplayan c#.net kodlarını yazınız.(checkbox iĢaretli ise tutara %5 Öğrenci indirimi uygulanacak.) private void button1_Click(object sender, EventArgs e) { Double fiyat, kdv, tutar; fiyat = double.Parse(textBox1.Text); kdv = (double.Parse(textBox2.Text)/100); //text boxdaki değerleri double yaptık tutar = fiyat +(fiyat * kdv); if (checkBox1.Checked==true) { tutar-=tutar*0.05; } label4.Text = tutar.ToString(); } 25 Örnek: Basit bir hesap makinesi yapımı. private void button1_Click(object sender, EventArgs e) { double topla, cikar, carp, bol; if (checkBox1.Checked) { topla = int.Parse(textBox1.Text) + int.Parse(textBox2.Text); MessageBox.Show(topla.ToString(),"Toplam"); } if (checkBox2.Checked) { cikar = int.Parse(textBox1.Text) int.Parse(textBox2.Text); MessageBox.Show(cikar.ToString(),"Fark"); } if (checkBox3.Checked) { bol = int.Parse(textBox1.Text) / int.Parse(textBox2.Text); MessageBox.Show(bol.ToString(), "Böl"); } if (checkBox4.Checked) { carp = int.Parse(textBox1.Text) * int.Parse(textBox2.Text); MessageBox.Show(carp.ToString(), "Çarp"); } CheckState : CheckBox ın baĢlangıçtaki durumunu belirten özelliktir. Unchecked/Checked/ Indeterminate değerlerini alır. backcolor Özelliği: checkBox‟ın arkaplan rengi ilgili iĢlemler yapılır. private void button1_Click(object sender, EventArgs e) { label1.Text = checkBox1.Text; checkBox1.BackColor = Color.Red; } Enabled Özelliği: checkBox‟ın aktif veya pasif yapar. True ise aktif , false ise pasiftir. private void button1_Click(object sender, EventArgs e) { checkBox1.Enabled = false; } Visible Özelliği: checkBox‟ın görünmezliği ilgili iĢlemler yapılır. True ise görünür,false ise görünmez. private void button1_Click(object sender, EventArgs e) { checkBox1.Visiable = false; } 3.5. CheckedListBox Çoklu seçme Ģansını bize sunan CHECKEDLISTBOX bileĢeni birçok durumda gerçekten iĢimizi kolaylaĢtırmaktadır. Normal listbox ile kullanımı hemen hemen benzerdir. Selectedindex: Seçilen liste elemanının sıra numarasını verir. Items.Count: Listedeki tüm elemanların toplam sayısını verir. Textbox1.Text=Checkedlistbox1. Items.Count Checkeditems.count: Seçili olan elemanların sayısını verir. Selecteditem: Hangi check seçili ise onun adını verir. Items.Contains: Tüm liste içeriğini parantez içinde verilen değerle kontrol eder. Değer varsa true, yoksa false dır. Örnek: MaaĢ hesap programı yapalım. 26 private void button1_Click(object sender, EventArgs e) { int deger=100; double tutar, toplamtutar, kesinti; tutar = double.Parse(textBox1.Text); kesinti = tutar * 0.10; textBox2.Text = kesinti.ToString(); //int adet = checkedListBox1.Items.Count; if (checkedListBox1.GetItemChecked(0)) //Birinci seçilmişmi { deger += 20; } if (checkedListBox1.GetItemChecked(1)) { deger += 10; } if (checkedListBox1.GetItemChecked(2)) { deger += 10; } if (checkedListBox1.GetItemChecked(3)) { deger += 5; } toplamtutar = (tutar * deger/100)-kesinti; textBox3.Text = toplamtutar.ToString(); } } } 3.6. ComboBox Combobox açılır liste kutusunda bulunan elemanlardan bir tanesinin seçilmesi durumunda kullanılan nesnedir. Combobox içindeki elemanlar Items özelliğinden ayarlanır. Items.Add Özelliği: ComboBox‟a eleman eklemek için kullanılır. Örnek: textBox‟a yazılan elemanı comboBox‟a ekleyelim. 27 private void button1_Click(object sender, EventArgs e) { if (comboBox1.Items.IndexOf(textBox1.Text)!=-1) { MessageBox.Show("Girdiğiniz şehir zaten var","Uyarı",MessageBoxButtons.OK); } else { comboBox1.Items.Add(textBox1.Text); } Text Özelliği: ComboBox‟ın girilen , seçilen veya gözüken elemanı temsil eder. Form çalıĢtırıldığında hangi elemanın seçili olarak görünmesini istiyorsak onu comboBox1=”Seçili olması istenen eleman” Ģeklinde yazmalıyız. Tabi bu satır form1_load kısmına yazılmalıdır. Bu özellik aynı zamanda seçili elemanın tespit edilmesinde de kullanılabilir. private void Form1_Load(object sender, EventArgs e) { comboBox1.Text = "Manisa"; } Selectedindex Özelliği: Items Özelliği: ComboBox‟ın eleman içeriğini öğrenmek için kullanılır. Text özelliğinden farklı olarak eleman numarası kullanılır. comboBox1.Text = comboBox1.Items[0].ToString(); Items.Clear Özelliği: ComboBox‟ı temizlemek için kullanılır. private void button1_Click(object sender, EventArgs e) { comboBox1.Items.Clear(); } Items.Count Özelliği: ComboBox‟taki eleman sayısını verir. Items.IndexOf Özelliği:ComboBox‟ta eleman aramak için kullanılır.Eğer belirtilen eleman var ise sıra numarasını , yok ise -1 değerini döndürür. Items.Contains Özelliği: ComboBox‟ta eleman aramak için kullanılır.Eğer belirtilen eleman var ise true , yok ise false değerini döndürür. Sorted özelliği: True/False değerlerinden birini alır. Combobox içindeki elemanları alfabetik olarak sıralamak için kullanılır. Bu özellik form yüklenirken kullanılmalıdır. comboBox1.Sorted=true; 3.7. ListBox Listbox verilerin nesnesidir. ListBox' satırlar a halinde eleman listelendiği ekleme Visual ve Studio silme iĢlemleri Items özelliğinden yapılır. Items.Add Özelliği: listBox‟a eleman eklemek için kullanılır. private void button1_Click(object sender, EventArgs e) 28 { listBox1.Items.Add(textBox1.Text); } Items.Clear Özelliği:listBox‟ı temizlemek için kullanılır. private void button2_Click(object sender, EventArgs e) { listBox1.Items.Clear(); } Items.Count Özelliği: listBox‟taki eleman sayısını verir. Items.IndexOf Özelliği: listbox‟ta eleman aramak için kullanılır.Eğer belirtilen eleman var ise sıra numarasını , yok ise -1 değerini döndürür. Örnek: Yukarıdaki örneği listBox‟ın içersinde eklemek istediğimiz eleman olup olmadığını kontrol edecek Ģekilde düzenleyelim. private void button1_Click(object sender, EventArgs e) { if (listBox1.Items.IndexOf(textBox1.Text)==-1) { listBox1.Items.Add(textBox1.Text); } else { MessageBox.Show("Eklemek İstediğiniz Eleman mevcut","Uyarı",MessageBoxButtons.OK,MessageBoxIcon.Error); } } Items.Contains Özelliği: listBox‟ta eleman aramak için kullanılır. Eğer belirtilen eleman var ise true, yok ise false değerini döndürür. Text Özelliği: listBox‟ın girilen, seçilen veya gözüken elemanı temsil eder. Örnek: AĢağıdaki uygulamayı gerçekleĢtiriniz. 3.8. RadioButton: Radio buton çok seçenek arasından bir tane seçim yapmamızı sağlayan araçtır. Mesela cinsiyet sorduğumuzda ya erkektir ya da kadın bunun gibi tek seçim yaptırmak istediğimiz yerlerde radio buton nesnesini kullanırız. Text Özelliği:Radio Butonun etiket yazısını değiĢtirmemizi sağlar. radioButton1, radioButton2,… private void button1_Click(object sender, EventArgs e) { label1.Text = radioButton1.Text; } 29 Bu örnekte butona tıkladığımızda label1‟in texti radiobutonun textiyle değiĢir . backcolor Özelliği: radiobutton‟un arka plan rengi ilgili iĢlemler yapılır. private void button1_Click(object sender, EventArgs e) { radioButton1.BackColor = Color.Beige; } Enabled Özelliği: radiobutton‟un aktif veya pasif yapar. true ise aktif, false ise pasiftir. visible Özelliği: radiobutton‟un görünmezliği ilgili iĢlemler yapılır. True ise görünür, false ise görünmez. Checked Özelliği: radiobutton‟un en önemli özelliğidir. radiobutton‟un seçili olup olmadığı ile ilgili iĢlemler yapılır. True ise seçili, false seçili değildir. Örnek: Hangi radiobutton seçili ise label2‟ye onun text bilgisi yazılsın. private void button1_Click(object sender, EventArgs e) { if (radioButton1.Checked) { label2.Text = radioButton1.Text; } if (radioButton2.Checked) { label2.Text = radioButton2.Text; } if (radioButton3.Checked) { label2.Text = radioButton3.Text; } } Örnek: Bir otoparkta otomobiller 1 saat için 4 TL, minibüsler 1 saat için 5 TL ve otobüs/kamyon ise 6 TL ödemektedirler. Araç türünü seçip kaldığı süre girildiği zaman ödenecek tutarı görüntüleyen C# programını yazınız. private void button1_Click(object sender, EventArgs e) { int s, p = 0; s=int.Parse(textBox1.Text); if (radioButton1.Checked) { p = s * 4; } if (radioButton2.Checked) { p = s * 5; } if (radioButton3.Checked) { p = s * 6; } MessageBox.Show("Ödenecek Tutar: "+p.ToString()+" TL","Ödeme Bilgisi",MessageBoxButtons.OK,MessageBoxIcon.Information); } 3.9. GroupBox Nesneleri gruplamak için kullanılır. groupbox kullanma sebeplerini yazalım. 30 1-Formda birden fazla radiobutton gurubumuz olabilir. Aynı anda her gruptan da bir tane radiobutton seçmemiz gerekebilir. Bu durumda groupBox kullanmamız gerekir. AĢağıda örnek bir form verilmiĢtir. Groupbox kullanmayıp bütün radiobutonları forma eklerseniz sadece bir radiobuton seçebilirsiniz. Ama aĢağıdaki gibi groupbox ekleyerek her gurupta farklı seçim yapabiliriz. 2-Birden fazla nesneye aynı anda iĢlem yaptırılabilir. Mesela ekranda 10 tane textbox var.Programın herhangi bir yerinde bunları gizlememiz gerekiyor. 10 tane kod kullanmamız gerekiyor. (textBox1.Visible=true;textBox2.Visible=true;textBox3.Visible=true;… devam eder.) Ama groupBox‟la gruplarsak tek bir kodla bu iĢlemi yapabiliriz.(groupBox1.Visible=true;) 3-Form düzenli olsun diye kullanılabilir. Text Özelliği: GroupBox‟ın yanındaki metinle ilgili iĢlemler yapılır. backcolor Özelliği: groupBox‟ın arka plan rengi ilgili iĢlemler yapılır. Enabled Özelliği: groupBox‟ın aktif veya pasif yapar. True ise aktif, false ise pasiftir. visible Özelliği: groupBox‟ın görünmezliği ilgili iĢlemler yapılır. True ise görünür, false ise görünmez. Örnek: AĢağıdaki gibi bir form görüntüsü hazırlayalım. Kullanıcı bekar‟ı (radiobutton1) tıkladığında çocuk sayısı gözükmesin, evli (radiobutton2) tıkladığında gözüksün. Bu yüzden form_load‟da groupbox2′yi gizliyoruz. radiobutton2′nin (evli radiobutonu) checkedChanged‟ne yani seçildiğinde olayına groupbox2′yi formda gösterme kodunu yazıyoruz. radiobutton1′nin (bekar radiobutonu) checkedChanged‟ne yani seçildiğinde olayına groupbox2′yi formda gizleme kodunu yazıyoruz. private void Form2_Load(object sender, EventArgs e) { groupBox2.Visible = false; } private void radioButton1_CheckedChanged(object sender, EventArgs e) { groupBox2.Visible = false; } 31 private void radioButton2_CheckedChanged(object sender, EventArgs e) { groupBox2.Visible = true; } private void button1_Click(object sender, EventArgs e) { string medeni; if (radioButton1.Checked) { medeni=radioButton1.Text; MessageBox.Show("Medeni haliniz: "+ medeni); } if (radioButton2.Checked) { medeni=radioButton2.Text; MessageBox.Show("Medeni haliniz: "+ medeni); } } 3.10. Panel Nesneleri guruplamak için kullanılır. groupbox‟tan farkı kaydırma çubukları eklenmesidir. 1-Formda birden fazla radiobutton gurubumuz olabilir.Aynı anda her gruptanda bir tane radiobutton seçmemiz gerekebilir. Bu durumda panel ve groupbox kullanmak gerekir. 2-Birden fazla nesneye aynı anda iĢlem yaptırılabilir.Mesela ekranda 10 tane textbox var.Programın herhangi bir yerinde bunları gizlememiz gerekiyor.10 tane (textBox1.Visible=true;textBox2.Visible=true;textBox3.Visible=true;… kod kullanmamız devam eder.) Ama gerekiyor. groupBox‟la gruplarsak tek bir kodla bu iĢlemi yapabiliriz.(panel1.Visible=true;) 3-Form düzenli olsun diye kullanılabilir. backcolor Özelliği: panel‟ın arkaplan rengi ilgili iĢlemler yapılır. Enabled Özelliği: panel‟ın aktif veya pasif yapar. True ise aktif , false ise pasiftir. visible Özelliği: panel‟ın görünmezliği ilgili iĢlemler yapılır. True ise görünür, false ise görünmez. Örnek:comboBox‟tan seçilen panelin görünür hale gelmesi. private void Form1_Load(object sender, EventArgs e) { panel1.Visible = false; panel2.Visible = false; panel3.Visible = false; panel1.BackColor = Color.Red; panel2.BackColor = Color.Black; panel3.BackColor = Color.Brown; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.Text=="Panel1") { panel1.Visible = true; panel2.Visible = false; panel3.Visible = false; } else if (comboBox1.Text=="Panel2") { panel2.Visible = true; panel1.Visible = false; panel3.Visible = false; } else 32 { panel3.Visible = true; panel2.Visible = false; panel1.Visible = false; } } 3.11. PictureBox Programa görsellik katmak için bazı yerlere resimler ekleyebiliriz. Bunun için picturebox kullanımı basit bir yoldur. Ayrıca pictureBox‟ımıza internet üzerinde de resim yükleyebiliriz. PicureBox‟ımıza resim eklemeye gelince [Design] kısmından da picurebox‟a tıklayıp sağ üstten ok iĢaretine tıklayıp choose image ile resim seçebiliriz. pictureBox1.Image = Image.FromFile("C:\\denemeResim.jpg"); Yukarıdaki kodu kullanabiliriz. Eğer internet üzerindeki 1resimi yüklemek istersek aĢağıdaki kodu kullanabiliriz pictureBox1.ImageLocation = "http://www.gorselprogramlama.com/logo.gif"; Eğer programımızın çalıĢtığı dizininden bir resmi açmak istersek pictureBox1.ImageLocation = "resim.jpg"; kodunu kullanabiliriz. Örnek: ComboBox‟ta seçilen isme göre pictureBox‟ta resim görüntüleme private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.Text == "Araba 1") pictureBox1.ImageLocation = "araba1.jpg"; else if (comboBox1.Text == "Araba 2") pictureBox1.ImageLocation = "araba2.jpg"; else if (comboBox1.Text == "Araba 3") pictureBox1.ImageLocation = "araba3.jpg"; else if (comboBox1.Text == "Araba 4") pictureBox1.ImageLocation = "araba4.jpg"; else if (comboBox1.Text == "Seçiniz") pictureBox1.ImageLocation = ""; else MessageBox.Show("Listede muvcut değil !"); } 3.12.İmageList imagelist kontrolü ,formumuzda resimleri kullanacaksak iĢimize yarayacaktır.Bilindiği gibi resimle alakalı bir diğer kontrol olarak picturebox bulunmaktadır, imagelistte depoladığımız resimleri indis numaralarıyla pictureboxta görüntüleyebiliriz. Örnek olarak formumuzda birden fazla picturebox var ve biz bu resimleri runtime'da değiĢtirmek istiyoruz. Gerekli kodlardan sonra formumuzdaki resimleri dinamik olarak değiĢtirebilme imkanı doğabilmektedir 3.13. Timer Ġstediğimiz komutların belirlediğimiz zaman aralığında tekrarlamasını istiyorsak timer kullanabiliriz. Ġnterval Özelliği: Timer‟ın çalıĢacağı zaman bölümüdür. Zaman mili saniye cinsindedir. Mesela her 1 saniyede kodları çalıĢtırmak istersek interval 1000, her 2 saniyede kodları çalıĢtırmak için interval‟i 2000 yapmamız gerekir. Enabled Özelliği: Değeri true ise timer‟ın çalıĢmasını, false ise durdurulmasını sağlar. Yani enabled değeri true ise timer‟ın Tick olayına yazılan kodlar çalıĢır, false ise çalıĢmaz. Tick Olayı : Bu olaya yazılan kodlar interval ile belirlenen zamanda tekrar edilir. 33 Örnek: BaĢla ya basınca her 1 saniyede listbox‟a c#öğreniyorum yazsın. Dur tıklanınca ekleme iĢlemi durdurulsun. private void Form1_Load(object sender, EventArgs e) { timer1.Enabled = false; timer1.Interval = 1000; } private void button1_Click(object sender, EventArgs e) { timer1.Enabled = true; } private void button2_Click(object sender, EventArgs e) { timer1.Enabled = false; } private void timer1_Tick(object sender, EventArgs e) { listBox1.Items.Add("C# Öğreniyorum"); } Örnek: BaĢlaya tıklanınca her saniyede sayı bir bir artırılıp label‟e yazılsın. Dur denilince iĢlem durdurulsun. public Form2() { InitializeComponent(); } int sayac = 0; private void Form2_Load(object sender, EventArgs e) { timer1.Enabled = false; timer1.Interval = 1000; } private void button1_Click(object sender, EventArgs e) { timer1.Enabled = true; } private void button2_Click(object sender, EventArgs e) { timer1.Enabled = false; } private void timer1_Tick(object sender, EventArgs e) { sayac++; label1.Text = sayac.ToString(); } 3.14.SubString Metodu Metinlerdeki bir harf ya da harfler grubunu seçmek için kullanılır. Integer veri tipinde bir ya da iki tane parametre alır. string labelDegisken = "www. akhisarmyo.cbu.edu.tr.com"; string Degistir = labelDegisken.Substring(4,10); MessageBox.Show(Degistir.ToString()); Yukarıdaki kod da 4 yazdığımız kısım ile a harfinden baĢlayarak 10 karakter alıp değiĢkene atıyoruz. Bu arada ilk baĢtaki w harfinin index değeri sıfırdan baĢlar. Yani bizim 4 olarak yazdığım sayı aslında 5. 34 karakteri ifade etmektedir. ġimdi Substring metodunun baĢka türlü olanını inceleyelim. string labelDegisken = "www. akhisarmyo.cbu.edu.tr.com"; string Degistir = labelDegisken.Substring(4); MessageBox.Show(Degistir.ToString()); Yukarıdaki kodda ise sadece Substring kısmında 4 yazılmıĢ. Bu 5. karakterden baĢlayarak son karaktere kadar string ifadeyi alıp değiĢkene at demektir. Yine burada da index olarak sıfırdan baĢlar. AĢağıdaki örnekte textBox‟a yazılan yazı label‟a aktarılmaktadır. private void button1_Click(object sender, EventArgs e) { //label1.Text=s.Substring(4); //Yukarıda 4. karakterden itibaren geri kalanı yazar. //label1.Text = s.Substring(4,10); //Yukarıda 4. karakterden itibaren 10 karakter yazar. label1.Text = textBox1.Text.Substring(4,10); //textBox' yazılan ifadenin 4. karakterinden itibaren 10 karakter yazar. //kaç karakter yazılacağını textbox ile alalım. 3.15.MenuStrip C# projelerimize menü oluĢturmak için Toolbox içindeki MenuStrip nesnesini kullanacağız. Menü oluĢturma ve MenuStrip nesnesinin özellikleri aĢağıdaki gibidir. Toolbox ta bulunan Menus&Toolbars bölümünden forma MenuStrip ekleyin. Formun üst tarafında beliren TypeHere bölümünü kullanarak menüleri ve alt menüleri oluĢturun. Menü oluĢturma iĢlemi bittikten sonra menü item‟lerine çift tıklayarak açılacak formları c# kodları ile bağlayın. Formlar Arası Veri Gönderme: C# ta formlar arasında veri ve değiĢken göndermek mümkündür. Örneğin Form2 den, Form1 de kullandığınız bir değiĢkene eriĢebilir veya Form1 üzerindeki bir nesnede bulunan veriyi değiĢkene aktararak diğer formlarda kullanabilirsiniz. Bunun için değiĢkeni public static olarak ayarlamak gerekir. Bu tür değiĢkenler partial class içinde tanımlanmalıdır. AĢağıdaki örnekte menustripte yeni komutu verildiğinde yeni form açılır. public partial class Form1 : Form { public static int puan; public Form1() { InitializeComponent(); } 35 private void yeniToolStripMenuItem_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); this.Hide(); } private void button1_Click(object sender, EventArgs e) { puan = int.Parse(textBox1.Text); Form2 f2 = new Form2(); f2.Show(); this.Hide(); } Yukarıdaki örnekte puan değiĢkenini form2‟de kullanalım. private void Form2_Load(object sender, EventArgs e) { label1.Text = Form1.puan.ToString(); } Formlar arası veri alıĢ veriĢinde ikinci yöntem ise aĢağıdaki gibidir. 3.16.ContexMenuStrip Formumuza sağ tık menüsü eklemek için kullanulan araçtır. Bu aracı seçmek için Toolbox‟tan ContextMenuStrip seçilir. Daha sonra menu de olmasını istediğimiz komutları girmeliyiz. ContextMenuStrip‟in formda kullanılması için form özelliklerinden ContextMenuStrip özelliğinden ContextMenuStrip1 seçilmelidir. 3.17.StatusStrip statusStrip programlarınızda kullanıcıları bilgilendirmek için uygulayabileceğiniz bir durum çubuğu kontrolüdür. Statusstrip üzerinde mesaj, yükleme durumu, resim, menü gibi bildirimler sunabilirsiniz. C#‟da statusStrip kullanımı için form üzerinde bir buton, timer, statusstrip nesnesi yerleĢtiriyoruz. Daha sonda tasarım alanında statusStrip nesnesine tıklayıp bir label ve bir yükleme (progressbar) çubuğu eliyoruz daha sonra buton içerisine private void button1_Click(object sender, EventArgs e) { for (int i = 0; i <= 100; i++) { toolStripProgressBar1.PerformStep(); Application.DoEvents(); } } Timer nesnesine private void timer1_Tick(object sender, EventArgs e) { DateTime t = DateTime.Now; string s = t.ToLongTimeString(); toolStripStatusLabel1.Text = "Saat: " + s; } 36 Yukarıdaki örnekte Application.DoEvents() kodunun görevi bir windows form çalıĢtırılığında, döngü içerisinde gerçekleĢtirilmek istenen olaylar bir kuyruğa alınır ve bu kuyrukta bekletilir. Olayların kuyrukta bekletiliyor olması, uygulamanın cevap vermemesine ve hatalar ile karĢılaĢmanıza sebep olur. Bu hatalardan, kuyrukta bekleyen olayların iĢlenmesini sağlayan Application.DoEvents(); komutunu döngünüzün içerisinde kullanarak kurtulabilirsiniz. 3.18 Formdaki Tüm TextBox’ları Temizleme TextBox‟ların içini temizlemek için kullanılacak çeĢitli komutlar var. Örnek olarak aĢağıdaki komutları gösterebiliriz. textBox1.Clear();//ya da textBox1.Text=””; Ancak bu komutlar textBox saysısının fazla olduğu durumlarda kullanıĢlı olmayabilir. Fazla sayıda textBox olan formlarda textBoxların temizlenmesi için farklı bir komut satırı kullanmak daha kolay olabilir. private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < this.Controls.Count; i++) { if(Controls[i] is TextBox)Controls[i].Text = ""; } } Yukarıdaki komut satırında bir for döngüsü oluĢturulmuĢ. Bu döngünün bitiĢ parametresi this.Controls.Count komutuyla hesaplanır. Bu komut formdaki kontrollerin (textBox, Label, Buton…) sayısını bulur. Ancak temzilenmesini istediğimiz sadece texBoxlar olduğu için if yapısıyla sadece textBoxlar temizlenir. Tabindex: Bu komut sayesinde tab tuĢuna basıdığında hangi form elemanın seçileceği belirlenir. Burada bilinmesi gereken her form elemanın bir Tabindex numarası olduğudur. Form çalıĢtığıda Tabindex numarası en düĢük olan form elemanı seçili olarak çalıĢlır. Tab tuĢuna bastığımızda ise Tabindex numarasına göre form elemanları küçükten büyüğe doğru seçilmeye devam eder. TextBox’a Veri GiriĢini Zorunlu Kılma: Özellikle bazı durumlarda TextBoxlara veri giriĢi zorunlu olması istenebilir. Bunun için kullanılacak komut satırı aĢağıdaki gibidir. Burada Trim() komutunun görevi TextBox‟a girilen boĢluk karakterlerini silmektir. Böylece textBox‟ın baĢındaki veya sonundaki boĢluklar silinmiĢ olur. if (textBox1.Text.Trim() != "" && textBox2.Text.Trim() != "" && textBox3.Text.Trim()!="") if yapısı ile veri girilmesi zorunlu alanlara veri girilmemiĢ ise tespit edilip uyarı mesajı verilebilir. TextBox’a Metinsel ya da Sayısal Veri GiriĢini Zorunlu Kılma: Veri tabanı iĢlemlerinde TextBox‟lara girilicek verilerin metinsel ya da sayısal olması önemlidir. Bunun kontrolünü yapmak için ilgili TextBox seçilir ve özellikler pencersinden Events(olaylar) sekmesinden KeyPress olayı çift tıklanarak kodlar yazılır. private void textBox2_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsDigit(e.KeyChar)==false && e.KeyChar!=(char)08) { e.Handled = true; } 37 } Yukarıdaki kod bloğunda e.handled komutu seçili TextBox‟a veri giriĢini engeller. Char.IsDigit (e.KeyChar) Komutu ise sayısal değer girildiğinde True döndürür. Dolayısıyla yukarıdaki komut satırında sayısal değer girilmediyse ve ascii kodu 08 olan backspace tuĢuna basılmadıysa TextBox‟a veri giriĢi durdurulur. Böylece seçili TextBox‟a sadece saysıyal değer girilebilir. Eğer TextBox‟a sadece metinsel ifadeler girilmesi isteniyorsa yukarıdaki komut satırı aĢağıdaki gibi düzenlenmelidir. Buradaki char.IsLetter(e.KeyChar) komutu sadece metinsel ifade girildiğinde True döndürür. private void textBox2_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsLetter(e.KeyChar)==false && e.KeyChar!=(char)08) { e.Handled = true; } } 4. Veri Tabanı ĠĢlemleri 4.1. Veri Tabanına Bağlanma C# ile Access veri tabanına bağlantı kurmadan önce Ms Access‟te bir veri tabanı oluĢturup projemizin exe dosyasının bulunduğu klasöre kaydetmeliyiz. Ms Access‟in sürümü 2007 veya üstü olabilir. Ancak Ms Access sürümü 2003 ise veri tabanı bağlantı kodumuzda değiĢikler yapmamız gerekecektir. Veri tabanı komutlarını kullanmak için isim uzayına using System.Data.OleDb; isim uzayını eklemeliyiz. Veri tabanı bağlantısı oluĢturmak için gerekli olan komut satırını global tanımlamalısınız. Bunun için aĢağıdaki komut satırını public satırından sonra yazılmalıdır. OleDbConnection bag= new OleDbConnection(“Provider=Microsoft.Ace.OleDb.12.0;Data Source =data.accdb”); Veri tabanı bağlantısını açmak için bag.Open(); Komutu kullanılır. Yine veritabanı bağlantısını kapatmak için, bag.Close(); komutu kullanılır. private void button2_Click(object sender, EventArgs e) { try { bag.Open(); MessageBox.Show("Veri tabanı bağlantısı sağlandı"); bag.Close(); MessageBox.Show("Veri tabanı bağlantısı kesildi"); for (int i = 0; i < this.Controls.Count; i++) { if (Controls[i] is TextBox) Controls[i].Text = ""; } } catch (Exception hata) { MessageBox.Show(hata.Message); } } Yukarıdaki örnekte kaydet butonuna basıldığında veri tabanına bağlandı mesajı alınacaktır. Daha sonrada bağlantı kesildi mesajı alanıcaktır. Buradaki try komutu hata yakalamk için kullanılır. 4.2. Veri Tabanından Veri Çekme 38 Veri tabanındaki verileri C# „a aktarırken önce data adaptör (OleDbDataAdapter) kullanılır. Daha sonra data adaptördeki veriler data tablo (DataTable) veya sanal veritabanı (DataSet) kullanılır. AĢağıda data tablo kullanılmıĢtır. Önce forma DataGridView eklenir. OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source =data.accdb"); DataTable tablo= new DataTable();//tablo isminde tablo tanımladık. private void Form2_Load(object sender, EventArgs e) { label1.Text = "Merhaba "+Form1.adi; OleDbDataAdapter adtr = new OleDbDataAdapter ("Select * From ogrbil",bag);//sql deyimini yazıyoruz adtr.Fill(tablo);//data adaptörün içini tabloya aktardık. dataGridView1.DataSource = tablo;//tablodaki verileri datagridviewe aktardık. } 4.3. Veri Tabanına Kayıt İşlemi Veri tabanına kayıt iĢlemi için OleDbCommand() komutu kullanılmaktadır. private void button2_Click(object sender, EventArgs e) { bag.Open(); kmt.Connection = bag; kmt.CommandText = "INSERT INTO ogrbil(ogrno,adsoyad,sinifi,adres) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')"; kmt.ExecuteNonQuery(); bag.Close(); } Tabi public kısmında OleDbCommand tanımlanmalıdır; OleDbCommand kmt = new OleDbCommand(); 39
Benzer belgeler
6 - internetsitecisi.com
harcanmazsa) sadece string olabilir. Kullanıcıdan sayısal bir değer alınırsa, bu değer string tipinde bir değiĢken
üzerinde taĢınabilir ve matematiksel bir iĢlemde kullanılamaz.
SDÜ Eğitim Öğretim Bilgi Sistemi Ders İçeriği
bir Ģifre formu olsun , açılıĢta bu form gösterilir ve form kapandığında 2. form yerine
geçmeden program kapanacaktır. Bu durumda ana form olarak form2 ayarlanmalı ve
form2 nin load olayından form1...
C# ile İlk Uygulamalar ve Değişkenler
NOT: Float veri tipindeki değiĢkene değer aktarımı için değerinin sonuna “F” karakteri, Decimal veri tipindeki
değiĢkene değer aktarımı için değerinin sonuna “M” karakteri eklenmelidir.
NOT: Char v...
bu döküman kaan aslan tarafından c ve sistem programcıları
label1.Text = "Byte değişken:" + a; //değişkenler yazdırılıyor.
label2.Text = "Short değişken:" + b;
label3.Text = "Integer değişken:" + c;
label4.Text = "Long değişken:" + d;