GÖRSEL PROGRAMLAMA DERS NOTLARI ÖĞRENCĠNĠN : ADI : SOYADI : NUMARASI :



Benzer belgeler
Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

Visual Studio 2010 veya 2013, Sharp Develop 3.2 programlarını kurabilirsiniz.

Bilgisayar Programcılığı. Görsel Programlama-I. Öğr. Gör. Cansu AYVAZ GÜVEN

İNTERNET TABANLI PROGRAMLAMA

C# Form Uygulamaları. Nesne Tabanlı Programlama I (C#) Ders Notu. S.Ü.Akören A.R.E. Meslek Yüksekokulu C.ÖZCAN- F.SARAY

Görsel Programlama (Visual Programming) 2.Hafta

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

HSancak Nesne Tabanlı Programlama I Ders Notları

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

Görsel Programlama (Visual Programming) 2.Hafta

ASP.NET ile Bir Web Sitesi Oluşturma

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları

Program AkıĢ Kontrol Yapıları

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Response : Sunucunun istemciye veri yollamasını

HSancak Nesne Tabanlı Programlama I Ders Notları

YZM 2105 Nesneye Yönelik Programlama

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

Çözüm :RadioButtonList1 kontrolunuekliyoruz.enableautopostback iaktifleştiriyoruz..

Nesne Tabanlı Programlama-1

YZM 2105 Nesneye Yönelik Programlama

İNTERNET TABANLI PROGRAMLAMA- 3.ders

HESAP MAKİNASI YAPIMI

Örnek Uygulama: CheckedListBox da seçili olanları listbox nesnesine ekleyen program.

SİNOP ÜNİVERSİTESİ MESLEK YÜKSEKOKULU MEKATRONİK PROGRAMI

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

ASP.NET M U S T A F A K I L I Ç M C S E, M C D B A

Görsel Programlama (Visual Programming)

C#(Sharp) Programlama Dili

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

Şekil 2.1. Bu bölümde ASP.Net platformumuzu açtığımızda Toolbox penceresindeki Standart bölümündeki kontrollerden bahsedeceğiz.(şekil 2.2) Şekil 2.

Yukardaki gibi sonsuz döngülü programlara Ctrl+Break tuş takımı ile müdahale edilmesi gerekir, aksi halde program sonsuz döngüye girer.

YZM 2105 Nesneye Yönelik Programlama

BM 102 Bilgisayar Programlama II. Windows Form Application

TEMEL BİLGİSAYAR. Ders Notları. Yrd. Doç. Dr. Seyit Okan KARA

Ders 7: Form Kontrol Elemanları. barisgokce.com

Nesne Tabanlı Programlama

DATA STRUCTURES. Part I C# Programlama Dili Temelleri

1 Aralık 2011 / Perşembe

İNTERNET TABANLI PROGRAMLAMA

HSancak Nesne Tabanlı Programlama I Ders Notları

ÖĞRENME FAALĠYETĠ 4 ÖĞRENME FAALĠYETĠ 4 4. SAYFA YAPISI

Her Select Case bloğu, mutlaka End Select ile bitmek zorundadır.

ÖĞRENME FAALĠYETĠ 3 ÖĞRENME FAALĠYETĠ 3

Açılan programın pencere görünümü aşağıdaki gibidir. 2. Araç Çubuğundan kaydet düğmesi ile

Android Ders Notları

Programlama Dilleri III 1

VISUAL C#.NET. CONSOLE EKRANINA YAZI YAZDIRILMASI (using System Kullanılarak Yapılan Uygulama) CONSOLE DERLENMESİ= Debug / Start Without Debugging


Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Seri No Takibi İÇERİK

C# EĞİTİM ÇALIŞMASI. Gülhan AYDOĞAN AKKAŞ : Bilişim Teknolojileri Öğretmeni. 1.ToolBox : Properties Solution Explorer...

Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir:

Sınıf Nesne Kavramları C# Bileşenleri Özellikler, Olaylar, Metotlar

BİLGİSAYAR DESTEKLİ TASARIM II

İNTERNET TABANLI PROGRAMLAMA

Önce Access açıp,masaüstü ne, vt.mdb adlı veri tabanı dosyasını oluşturuyoruz. Kayıt türünü seçiyoruz

Nesne Tabanlı Programlama

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Visual C# - Görsel Programlama II Örnek Sorular ve Cevaplar

ÖĞRENME FAALĠYETĠ 8 ÖĞRENME FAALĠYETĠ ÖZELLEġTĠRME

GENETİK ALGORİTMA GEZGİN SATICI ÖDEVİ

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

Açılan penceren gerekli ayarlamalar yapılarak sayfa numaraları görüntülenir.

Visual Basic Windows Window Progr Pr a ogr mlama a

GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

/*int sayi1, sayi2,toplam=0;

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Data Structures Lab Güz

EXCEL 2007 DERS NOTLARI. Office düğmesi Hızlı EriĢim Çubuğu BaĢlık Çubuğu Formül Çubuğu

EXCEL 2007 ELEKTRONİK ÇİZELGE

UYGULAMALAR. İkinci liste kutusu (List 2) Birinci liste Kutusu (List 1) Metin Kutusu

C#.Net & Linq (Language Integrated Query)

1. LabVIEW ile Programlama

Metin Tabanlı İçerik Oluşturma Araçları

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Diziler İndisli Değişkenler

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Proje Başlatma. New Project: Yeni Proje Hazırlamak Open Project: Mevcut Projeleri Açmak

T.C. MĠLLÎ EĞĠTĠM BAKANLIĞI EĞĠTĠM TEKNOLOJĠLERĠ GENEL MÜDÜRLÜĞÜ BĠLĠġĠM HĠZMETLERĠ DAĠRESĠ MEZUN ÖĞRENCĠ SORGULAMA MODÜLÜ KULLANIM KILAVUZU

BİLGİSAYAR PROGRAMLAMA. Yrd. Doç. Dr. Beytullah EREN

DENEME SINAVI. ECDL BAŞLANGIÇ Hesap Tablosu

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

NOT: VERİTABANINDAKİ TABLOLARI OLUŞTURMAYI DA UNUTMAYACAĞIZ.

24 Kasım 2011 / Perşembe

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Ġşlem tablosu kavramını tanımlamak ve işlem tablolarının işlevlerini öğrenmek. Ġşlem tablolarının temel kavramlarını tanımlamak.

MUĞLA SITKI KOÇMAN ÜNĠVERSĠTESĠ. BĠLGĠ ĠġLEM DAĠRE BAġKANLIĞI. AKADEMĠK PERSONEL KĠġĠSEL WEB SAYFASI KULLANIM KILAVUZU MUKWEB ĠÇĠNDEKĠLER TABLOSU

SAB 103 TEMEL BİLGİSAYAR KULLANIMI

4 Front Page Sayfası Özellikleri

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

PROGRAMLAMAYA GİRİŞ DERS 2

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 Help Register 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

2.Arayüz ç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. 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) C# Adı CTS KarĢılığı Açıklama sbyte short int long byte ushort uint ulong float double decimal System.Byte System.Int16 System.Int32 System.Int64 System.Byte System.UInt16 System.UInt32 System.UInt64 System.Single Sytem.Double System.Decimal 8 bit iģaretli tamsayı 16 bit iģaretli tamsayı 32 bit iģaretli tamsayı 64 bit iģaretli tamsayı 8 bit iģaretsiz tamsayı 16 bit iģaretsiz tamsayı 32 bit iģaretsiz tamsayı 64 bit iģaretsiz tamsayı 32 bit tek kayan sayı 64 bit çift kayan sayı 128 bit ondalıklı sayı Bellekte Kapladığı Alan Max ve Min aralık ya da değeri 1 Byte -128 : 127 2 Byte -32.768 : 32.767 4 Byte -2.147.483.648 : 2.147.483.647 8 Byte 1 Byte 0 : 255 2 Byte 0 : 65.535-9.223.372.036.854.775.808 : 9.223.372.036.854.775.807 4 Byte 0 : 4.294.967.295 8 Byte 0 : 18.446.744.073.709.551.615 4 Byte 8 Byte 16 Byte +yada 1,5*10-45 : + ya da 3,4*10 38 (virgülün sağında ve solunda 7 basamak) +yada 5*10-324 : + ya da 1,7*10 308 (virgülün sağında ve solunda 15-16 basamak) +yada 1,0*10-28 : + ya da 7,9*10 28 (virgülün sağında ve solunda 28-29 basamak) bool System.Boolean 2 Byte true ya da false char System.Char Tek Karakter 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(); 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: 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. 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; case değer2: 12

blok2;... 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. 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"); case "1": listbox1.items.add("öğretmenler Odası"); listbox1.items.add("idaresi Odaları"); listbox1.items.add("memur Odaları"); case "2": listbox1.items.add("sınıflar"); listbox1.items.add("bilgisayar Laboratuarı"); case "3": listbox1.items.add("sınıflar"); listbox1.items.add("fen Laboratuarı"); 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"); default: listbox1.items.add(combobox1.text+" blokta" + combobox2.text + ". kat yoktur."); case "C": switch (combobox2.selectedtext) case "Zemin": listbox1.items.add("makine Teknolojisi Atölyeleri"); case "1": listbox1.items.add("elektirik Teknolojisi Atölyeleri"); default: listbox1.items.add(combobox1.text+" blokta" + combobox2.text + ". kat yoktur."); case "E": switch (combobox2.selectedtext) case "Zemin": listbox1.items.add("idareci Odaları"); listbox1.items.add("sınıflar"); case "1": listbox1.items.add("öğretmenler Odası"); listbox1.items.add("idareci Odası"); listbox1.items.add("sınıflar"); case "2": listbox1.items.add("bilişim Teknolojileri Bilgisayar Laboratuarları"); listbox1.items.add("sınıf"); default: listbox1.items.add(combobox1.text+" blokta" + combobox2.text + ". kat yoktur."); case "G": switch (combobox2.selectedtext) 14

case "Zemin": listbox1.items.add("sınıflar"); case "1": listbox1.items.add("sınıflar"); case "2": listbox1.items.add("sınıflar"); listbox1.items.add("öğretmenler Odası"); default: listbox1.items.add(combobox1.text+" blokta" + combobox2.text + ". kat yoktur."); 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; //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; //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. 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) 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: DialogResult cev=messagebox.show("iş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 dayalı program yazmak için Microsoft Windows uygulamasını kullanabiliriz. Bu uygulamanın adı da 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. 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. button1.backcolor = Color.Blue; Enabled Özelliği: Button un aktif veya pasif yapar. true ise aktif, false ise pasiftir. 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. button1.visible = false; forecolor Özelliği: Button un yazı rengi ile ilgili iģlemler yapılır. 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. 23

3.3. TextBox string kelime; kelime = textbox2.text; label2.text = kelime; //label2.text = textbox2.text; //Kısa olarak yukarıdaki kodda yazılabilir. 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. 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. 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.) 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ı. 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. label1.text = checkbox1.text; checkbox1.backcolor = Color.Red; Enabled Özelliği: checkbox ın aktif veya pasif yapar. True ise aktif, false ise pasiftir. 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. 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

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

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. Selectedindex Özelliği: 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"; 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. 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 satırlar halinde listelendiği Visual Studio nesnesidir. ListBox' a eleman ekleme ve silme iģlemleri Items özelliğinden yapılır. Items.Add Özelliği: listbox a eleman eklemek için kullanılır. 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. 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, 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. 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. 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. 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; 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 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.(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. 3.12.İmageList Ö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!"); 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; 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; 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(); 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. Timer nesnesine 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 timer1_tick(object sender, EventArgs e) for (int i = 0; i <= 100; i++) toolstripprogressbar1.performstep(); Application.DoEvents(); 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. 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