GRAFİK ANİMASYON DERSİ

Transkript

GRAFİK ANİMASYON DERSİ
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
ç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

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.

Detaylı

SDÜ Eğitim Öğretim Bilgi Sistemi Ders İçeriği

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...

Detaylı

C# ile İlk Uygulamalar ve Değişkenler

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...

Detaylı

bu döküman kaan aslan tarafından c ve sistem programcıları

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;

Detaylı