Visual Studio 2010.Net C# Programa giriş ve Çalıştırma. Program Çalışması



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

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

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

İNTERNET TABANLI PROGRAMLAMA

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

Görsel Programlama (Visual Programming) 2.Hafta

ASP.NET ile Bir Web Sitesi Oluşturma

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

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

İNTERNET TABANLI PROGRAMLAMA- 3.ders

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.

Görsel Programlama (Visual Programming) 2.Hafta

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

Response : Sunucunun istemciye veri yollamasını

HSancak Nesne Tabanlı Programlama I Ders Notları

Görsel Programlama (Visual Programming)

İNTERNET TABANLI PROGRAMLAMA

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

Nesne Tabanlı Programlama-1

C#.Net & Linq (Language Integrated Query)

24 Kasım 2011 / Perşembe

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

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

1 Aralık 2011 / Perşembe

VISUAL STUDIO.NET ve Veritabanı

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

KRİPTOANALİZ DERSİ FİNAL ÖDEVİ. PSO ile TRANSPOSITION CIPHER ÇÖZÜMÜ

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

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

Android Ders Notları

YZM 2105 Nesneye Yönelik Programlama

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

Sağ Tıkla. 5 Ocak 2012 / Perşembe. Yeni bir site açıyoruz. File New Web Site Browse yeni klasör ocak5persembe OK

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

Nesneye Dayalı Programlama Laboratuvarı

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

İNTERNET TABANLI PROGRAMLAMA

YZM 2105 Nesneye Yönelik Programlama

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

/*int sayi1, sayi2,toplam=0;

User Control : Standart bir kullanıcı arabirimi oluşturarak; bir uygulama içinde birden fazla. Siteye User Control Eklemek : 22 Mart 2012 / Perşembe

Klavye Kullanımı KLAVYE KULLANIMI

Görsel Programlama 1

Ders 7: Form Kontrol Elemanları. barisgokce.com

12- HAZIR FONKSİYONLAR

BM 102 Bilgisayar Programlama II. Windows Form Application

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.

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

HESAP MAKİNASI YAPIMI

PROGRAMLAMAYA GİRİŞ DERS 2

Masa üstünde vt34.mdb dosyası var, onu projemize eklemek için, App_Data ya sağ tıkla Add Existing Item vt34.mdb adlı dosyayı seç Add

Timer İle arka plan renk değişimi

C#(Sharp) Programlama Dili

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

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

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

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Diziler İndisli Değişkenler

İNTERNET TABANLI PROGRAMLAMA- 3.ders

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

BM-205 GÖRSEL PROGRAMLAMA. Microsoft Visual Studio 2010 ile C# Windows Form Uygulamaları Geliştirme

HSancak Nesne Tabanlı Programlama I Ders Notları

DATA STRUCTURES. Part I C# Programlama Dili Temelleri

ÖDEVLERİ SİSTEME YÜKLEME USULLERİ

yeni_uye_kayit.ascx UserControl sayfamızda, kaydedilmek istenen üye eğer daha önce veritabanımızda kayıtlı ise bunu buldurup kullanıcıyı uyaralım;

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

İnternet Programcılığı Dersi 2.Dönem Ders Notu

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

C Programlama Dilininin Basit Yapıları

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

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

Resimlerin üstüne yazı yazacağız. resimyukle.aspx sayfası oluşturuyoruz.

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

string yenisaatdeger; string yenidakikadeger; string yenisaniyedeger;

SINIF İÇİ UYGULAMA KODLARI

1. MİCROSOFT EXCEL 2010 A GİRİŞ

CHECKBOX, RADIOBUTTON, COMBOBOX. checkbox Kontrolü. özelliği açıklama Alabileceği değer İşaretli olup true, false olmadığı

Ünite 7. Gelişmiş Nesneler II. Bilgisayar Programcılığı Önlisans Programı GÖRSEL PROGRAMLAMA I. Öğr. Gör. Rıza ALTUNAY

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

YZM 2105 Nesneye Yönelik Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

Matematiksel Operatörler

Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

Visual C#.NET 2005 Ders Notları

İNTERNET TABANLI PROGRAMLAMA- 4.ders

12 Ocak 2012 / Perşembe

FRONT PAGE EĞİTİM NOTLARI BAŞLANGIÇ. 1- Open araç çubuğu düğmesinin yanındaki aşağı oku tıklayarak, web seçeneğini işaretleyin

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

PROGRAMLAMA DERSİ 1. İNTERNET

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

LABEL BUTTON - TEXTBOX

C# ve SQL Server ile Resim Yükleme ve Login İşlemi

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

ÖDEVLERİ SİSTEME YÜKLEME USULLERİ

Transkript:

Programa giriş ve Çalıştırma Program Çalışması 2

-- Bu exe file her Windows makineda eskiden olduğu gibi çalışmaz. Mutlaka.net yüklü olmalıdır. 3

Mesaj Verme (Messagebox.Show) ve kütüphane Ekleme ( using ) 1. yöntem: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; //using System.Windows.Forms; namespace WindowsFormsApplication1 public partial class Form1 : System.Windows.Forms.Form public Form1() InitializeComponent(); private void button1_click(object sender, EventArgs e) System.Windows.Forms.MessageBox.Show("lutfen isimleri boş bırakmayınız "); II.Yöntem; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 public partial class Form1 : Form public Form1() 4

InitializeComponent(); private void button1_click(object sender, EventArgs e) MessageBox.Show("lutfen isimleri boş bırakmayınız "); Kodlamada Açıklama Kullanma Bir satır : // Çoklu satır : /* */ private void button2_click(object sender, System.EventArgs e) // mesaj kullanma /* *********************************************** ******** using ile kutuphane ekleme ****** ********* ve normal kullanım ****** */ MessageBox.Show("lutfen isimleri boş bırakmayınız"); 5

Kod komutlarını kolay yazma Boş satırda control space : Bütün kod komutları gelir Bir iki harf yazıp control space : Baglantılı kod komutları gelir Bir komut yazdıktan sonra. yazma : Baglantılı diğer komutlar gelir. Penceredeki komutlara Mouse, ok veya tab tuşu ile gelerek; enter veya tab tuşuna basarız. Using siz kullanımda nokta aktif olur. System.Windows.Forms.MessageBox.Show("faruk"); MessageBox.Show("ahmet"); - aktif olur - aktif olmaz Komutların ilk harfi küçük yazılmasında : Küçük olarak yazılırsa control-space ile yinede komutlar gelir. Tab veya Enter yuşu ile ilk harf büyütülmüş hale gelir. 6

Pencereler Properties : forms,button,texbox gibi objelerin özelliklerini değiştirme Events : Mouse a tıklayınca,uzerine gidince veya enter a basınca işlem yapma Toolbox : button, textbox gibi objeleri ekleme Solution : soluşın,proje ve forms kontrolu Server Explorer : Sql Server ile baglantı menusu Task list : Run veya derlemede hatalı satırları görme Araç Cubukları ( View-Toolbars ile gelir. Standart, Text Editor gibi) : Pencereleri getirme 7

Events Kullanma 8

Form, Code,Sqlserver baglantı, form butonları penceresini getirme Yapılmış bir projeye girdiğimizde bu ekranlar gelmeyebilir. Veya biz yanlışlıkla silmiş olabiliriz. 9

Program yazma yöntemleri Textbox bir objenin dış rengini değiştirme 1) Properties penceresinden 2) Kod yazma ile private void button1_click(object sender, EventArgs e) textbox1.backcolor = Color.Red; Textbox bir objenin Ekranda gözükmemesi Kod yazma ile private void button1_click(object sender, EventArgs e) textbox1.visible= false; 10

Değişkenler Tamsayı Değişkenler Aldıgı sayı aralığı Açıklama byte 0-255 byte x ; byte y=100; sbyte -128 - +128 sbyte x; sbyle y= -110; short -32178 - +32178 sbyte x; sbyle y= -3200; ushort 0-65535 sbyte x; sbyle y= 2000; int -2147483647 - (+2147483647 sbyte x; sbyle y= -110556; uint 0-4294967295 sbyte x; sbyle y= 110767; Real Sayı değişkenler float Normal real sayı tipi sbyte x; sbyle y= 100.25; Double Geniş real sayı tipi sbyte x; sbyle y= 100.25; Long Çokgeniş sayı tipi sbyte x; sbyle y= 100.25; Alfasal değişkenler string string adres; string adi= Faruk ; bool True ve false tipidir Bool medeni; Bool erkek=true; Özellikler Değişkenleri bir veya birden fazla arasına virgül koyarak tanımlayabilir.direk normal veya sabit giriş yapabilir String degerler cift tırnak arasında yazılır.. noktalı virgül ile işlem satırın bitişini saglarız. ; deger aktarma delphi de iki nokta ve eşittir ( := ).Burada ise sadece eşittir ( = ) kullanılır. Matematiksel işlemlerde Math.Pow kullanılır.sayıyı kendisiyle çarpar.. int ucret=10; MessageBox.Show(Math.Pow(ucret,1).ToString()); // 10 MessageBox.Show(Math.Pow(ucret,2).ToString()); // 100 MessageBox.Show(Math.Pow(ucret,3).ToString()); // 1000 const double pi=3.14; -- sabit tanımlama int yas=25; -- direk tanımlayıp giriş String ulke= Türkiye ; 11

int a; int b,c; -- iki değişken tanımlama string adi,soyad,adres; - iki değişken tanımlama double net; Real değişken tanımlama String t="100"; b=convert.toint32(textbox1.text); // standart integer a cevirme net=a+double.parse(t); // real sayı için cevirme b=a+int.parse(t); // integer için cevirme textbox4.text=a.tostring(); // string e cevirme b=convert.todouble(textbox1.text); // Real Sayıya cevirme adres=" Kervansaray mah. Dogs evleri E blok";//string deger giriş 12

Uygulamalar Textbox1.text değişkeni integer a cevrim yaparak a sayısı ve 5 ile toplama ve toplam degerin textbox4.text te yazılması ve mesaj olarak verilmesi. Đnteger sayının textbox4 te veya messagebox ile yazılması için string dönüşmesi gereklidir. MessageBox.Show(b.ToString()); Messagebox ta birden fazla alfasal degişkeni yazdırma için aralarında + kullanılır. veya string olarak birleştirmek için yine + kullanılır. Textbox4.Text=adi + +soyad; private void button1_click(object sender, System.EventArgs e) int a; int b,c; a=1000; b=5+a+convert.toint32(textbox1.text); // -->integer a cevirme textbox4.text=a.tostring(); // - string e cevirme MessageBox.Show(b.ToString()); MessageBox.Show(b.ToString()+" toplam degerdir"); Real Sayıya cevirme private void button2_click(object sender, System.EventArgs e) int a; Double b; a=1000; b=5+a+convert.todouble(textbox1.text);//real sayıya cevirme textbox4.text=a.tostring(); MessageBox.Show(b.ToString()); MessageBox.Show(b.ToString()+" toplam degerdir"); String deger giriş,birleştirme,mesaj olarak yazdırm private void button3_click(object sender, System.EventArgs e) String adres; adres=" Kervansaray mah. Dogs evleri E blok no:7"; textbox4.text=adres+textbox1.text; MessageBox.Show(textBox4.Text); Tarih formatına ekranda yazdırma String deger="20/09/2005"; DateTime tarih,tarih2; tarih=datetime.parse(deger); // stringi tarih formatına ceviriyor tarih2=datetime.parse(textbox1.text); textbox4.text=tarih.tostring(); 13

Event, Form ve Formlar arasında Değişken kullanımı Bir event içersinde kullanılan değişkenler sadece o event içersinde geçerlidir. bir değişkeni button1 event ında, iki değişkeni button2 event ında kullanılır. Private ile event lar dışında tanımladıgımız değişkeni ( fsayi) bir form içersinde her event ta kullanabiliriz. Bir form da kullandığımız değişkenin diğer formlarda kullanmak için public ile tanımlarız. Code kısmı : private int fsayi=100; // fsayi Bir formun içinde her event'ta kullanılır. public static int genel=30; // genel bütün formlarda kullanılır private void button1_click(object sender, System.EventArgs e) int bir; fsayi++; bir=100+fsayi; MessageBox.Show(bir.ToString()); MessageBox.Show(genel.ToString()); private void button2_click(object sender, System.EventArgs e) int iki; iki=200+fsayi; MessageBox.Show(iki.ToString()); MessageBox.Show(genel.ToString()); // MessageBox.Show(bir.ToString()); kullanılamaz. bir değişkeni button1'dedir. Dizin Kullanımı private void button8_click(object sender, System.EventArgs e) // tek boyutlu dizin tanımlama int[] yas; yas=new int[10]; // 0 ile 9 arasında 10 dizin oluşur yas[5]=100; yas[2]=120; MessageBox.Show(yas[5].ToString()+" " + yas[2].tostring()); // 5 elemanlı ulke dizin tanımlama. giriş hemen yapılıyor String[] ulke; ulke=new String[5] "turkiye","almanya","ingiltere","cin","rusya"; String[] sehir="denizli",",zmir","ankara"; MessageBox.Show(sehir[2]+" "+ ulke[3]); 14

// 2 boyutlu dizin tanımlama String[,] adi; adi=new String[5,7]; adi[1,3]="faruk senturk"; adi[2,4]="ahmet korkmaz"; MessageBox.Show(adi[1,3]+" " + adi[2,4]); diznin boyutu : Rank Diznin elaman sayısı : GetLength Diznin Üst sınırı : GetupperBound int[] yas; yas=new int[10]; // 0 ile 9 arasında 10 dizin oluşur MessageBox.Show("boyutu..:"+yas.Rank.ToString()+"diznin eleman sayısı..:"+yas.getlength(0).tostring()+"üst sınır..:"+yas.getupperbound(0).tostring()); Kullanılan Operatörler Atama = A=100; Eşitlik == if(a==100) veya İf((a==100) (b==50)) ve && İf((a==100)&&(b==50)) Değl! İf(!(a==100)) Eşit değil!= İf(a!=10) Büyüktür > İf(a>10) kücüktür < İf(a<10) Büyük eşittir >= İf(a>=10) Küçük eşittir <= İf(a<=10) X++ X=X+1 ++X X=X+1 X-- X=X-1 --X X=X-1 X+=5 X=X-5 X-=5 X=X-5 X*=5 X=X*5 15

Form ve code Penceresinin Çağrılması Bir c# projesi open edilince code ve form ekranı gelmeyebilir veya yanlışlıkla bu pencereleri silebiliriz. Proje open edilir. ( file project Windowsapplication5.sln ) Solution Explorer penceresi çağrılır. View -- solution Explorer Solution Explorer da form1.cs cift tıklanır. Form1 designer gelir. Code penceresi cagrılır. View ----- Code Program çalışmasında değer kontrolü TextBox veya label alana atma MessageBox ile ekranda yazdırma Kod izleme 16

17

Hesap makinesı Örnegi private void combobox1_selectedindexchanged(object sender, System.EventArgs e) double i; i=0; if (combobox1.text=="toplama") if ((textbox1.text!= "") && (textbox2.text!= "")) i = Double.Parse(textBox1.Text) + Double.Parse(textBox2.Text); if (combobox1.text=="cıkarma") if ((textbox1.text!= "") && (textbox2.text!= "")) i = Double.Parse(textBox1.Text) - Double.Parse(textBox2.Text); if (combobox1.text=="bolme") if ((textbox1.text!= "") && (textbox2.text!= "")) i = Double.Parse(textBox1.Text) / Double.Parse(textBox2.Text); 18

if (combobox1.text=="carpma") if ((textbox1.text!= "") && (textbox2.text!= "")) i = Double.Parse(textBox1.Text) * Double.Parse(textBox2.Text); label3.text=i.tostring(); private void Form1_Load(object sender, EventArgs e) combobox1.selectedindex = 0; // ilk girilen( toplama gibi) gözükür * double.parse string degeri integer a cevirir. * i.tostring() i nin integer degerini string degerine cevirir. Yeni form Çağrılması project --> add windows form ile önceden form2 yaratılmalıdır. private void button5_click(object sender, System.EventArgs e) Form2 yeni=new Form2(); yeni.show(); Programdan Çıkış private void button6_click(object sender, System.EventArgs e) Application.Exit(); Form dan Çıkış this.close(); Makinenın Adını öğrenme textbox4.text=system.security.principal.windowsidentity.getcurrent().name; 19

Değişkenleri Düzenlemek Procedure ve Fonksiyon Procedure (dönüşsüz): private void mesaj(string mes1,string mes2,int gun2) MessageBox.Show(mes1+" "+mes2+" "+gun2.tostring()); private void button3_click(object sender, System.EventArgs e) String adi="volkan Şentürk"; int yas=10; mesaj(adi,textbox1.text,yas); listbox1.items.add(adi+textbox1.text+yas.tostring()); Fonsiyon (dönüşlü): private static int hesapla(int ucr2,int gun2) int brut=ucr2*ucr2; //String genadi="okutman"+adi2; return brut; private void button1_click(object sender, System.EventArgs e) String adi="faruk Şentürk"; int ucr=convert.toint32(textbox1.text); // string int'e cevriliyor int gun=20; textbox2.text=hesapla(ucr,gun).tostring(); 20

Struct ve Class Yapılar, Enum Uygulama Önce groupbox cift tıklama veya sürükleyerek sayfaya getirilir. Radiobutton ise iki kez sürüklenerek groupbox1 içerisine bırakılır. Daha sonra button çift tıklanarak iki button oluşturulur. enum hafta hafta yeni; pazartesi = 0, sali = 1, carsamba = 2, persembe = 3, cuma = 4, cumartesi = 5, pazar = 6 private void gun() if (yeni == hafta.pazartesi) MessageBox.Show("monday"); else if (yeni == hafta.sali) MessageBox.Show(this, "tuesday"); else if (yeni == hafta.carsamba) MessageBox.Show(this, "wednesday"); else if (yeni == hafta.persembe) MessageBox.Show(this, "thursday"); else if (yeni == hafta.cuma) MessageBox.Show(this, "friday"); 21

private void button1_click(object sender, EventArgs e) if (radiobutton1.checked == true) yeni = hafta.pazartesi; gun(); else yeni = hafta.carsamba; gun(); private void button2_click(object sender, EventArgs e) yeni++; gun(); MessageBox Fonksiyonu MessageBox.Show("pamukkale üniversitesi"); // pamukkale üniversitesi MessageBox.Show(this,"pamukkale üniversitesi"); // pamukkale üniversitesi MessageBox.Show("pamukkale","mesaj penceresi"); // pencere ismi int aa; String adi="merve tas"; aa=140; MessageBox.Show(aa.ToString()); // 140 yazar MessageBox.Show(adi+" "+aa.tostring()); // merve senturk 140 MessageBox.Show(adi+" "+aa.tostring(),"personel bilgileri"); // ayrıca pencere ismini verir DialogResult devam; devam=messagebox.show("islem devam etsinmi","muhasebe sistemi", MessageBoxButtons.YesNoCancel ); if (devam==dialogresult.no) 22

MessageBox.Show("form kapanıyor"); this.close(); else if (devam==dialogresult.cancel) MessageBox.Show("cıkılıyor"); Application.Exit(); else MessageBox.Show("Program calısmaya devam ediyor"); devam=messagebox.show("islem devam etsinmi","muhasebe sistemi",messageboxbuttons.yesnocancel,messageboxicon.error); devam=messagebox.show("islem devam etsinmi","muhasebe sistemi", MessageBoxButtons.YesNoCancel,MessageBoxIcon.Error,MessageBoxDefaultButton.Button2); devam=messagebox.show("islem devam etsinmi","muhasebe sistemi",messageboxbuttons.yesnocancel,messageboxicon.error,messageboxdefaultbutton.button2, MessageBoxOptions.RightAlign); MessageBoxButtons.YesNoCancel MessageBoxButtons YesNoCancel YesNo RetryCancel OKCancel OK AbortRetryIgnore MessageBoxIcon.Asterix MessageBoxIcon Asterix Error Exclamation Hand Information None Question Stop Warning 23

InputBox Fonsiyonu C# da Visual basic6.0 daki gibi bir bilgi giriş fonksiyonu yoktur. Fakat bu fonsiyonu Visual Basic den çağırarak rahatlıkla kullanabiliriz. Visual Basic fonksiyonu çağrılır. InputBox fonksiyonu kullanma string sifre; sifre=microsoft.visualbasic.interaction.inputbox("sifreyi giriniz","sifre girisi","pamuk",100,200); 24

Şartlar İf switch for while : for döngüsünden farkı kac kez işletilecegi belli degildir. do-while : while den farkı şartın döngü dışında kontrol edilmesidir. foreach break dongu kontrol metodu thread.sleep() metodu application.doevents() metodu İf Yapıları Basit if yapısı : if(a==20) if-else yapıları : if(a==20) else if-else-if-else yapıları : if(a==20) // a=20 şart gecerli oldugunda çalışacak kod else if(a==30) // a=30 şart gecerli oldugunda çalışacak kod else // üsteki iki kod geçersiz olmasında çalışacak kod 25

Switch Yapısı int notu; if (textbox1.text!= "") notu = Convert.ToInt16(textBox1.Text); else notu = 0; switch (notu) case 10: label1.text = "sınavdan on aldınız"; break; case 20: label1.text = "sınavdan yirmi aldınız"; break; case 30: label1.text = "sınavdan otuz aldınız"; break; case 40: case 50: case 60: case 70: label1.text = "sınavdan 40-70 arası aldınız"; break; default: label1.text = "sınava girmediniz"; break; -- case "istanbul": string olarak kullanırız. switch (textbox1.text) case "rize": label1.text = "karadeniz bölgesindedir"; break; case "ankara": label1.text = "iç anadolu bölgesindedir"; break; case "izmir": case "denizli": case "usak": label1.text = "ege bölgesindedir"; break; default: label1.text = "yeniden giriniz"; break; For yapısı int k,say=10; for(k=1;k<10;k++) // for(k=1;k<=10;k+=2) ikişer ikişer artış if(k==5) break; say+=10; 26

// Form1.ActiveForm.Text=say.ToString(); formun baslıgında yazma label1.text=say.tostring(); foreach yapısı string[] fakulte=new string[3] "muhendislik","tıp","eğitim"; foreach(string yaz in fakulte) Form1.ActiveForm.Text=Form1.ActiveForm.Text+" ~~~ "+yaz; ---- formun başlıgına, mühendislik~~~ tıp ~~~ eğitim yazar. while Yapısı int k=1,tt=0; while(k<=10) k++; tt=tt+10; label1.text=tt.tostring(); int bb=1,pam=0; do bb++; pam+=10; while(bb<=5); label1.text=pam.tostring(); 27

thread.sleep() ve application.doevents() metodu -- Textbox a Girdiğimiz ismi listbox ve label a tek tek yazılması Hatırlatma: Threading kütüphanesi eklenmelidir. using System.Threading; using System.Threading; private void button1_click(object sender, EventArgs e) int k; for(k=0;k<=textbox1.text.length-1;k++) Thread.Sleep(1500); // 1 sn bekle Application.DoEvents(); // for dongusu, listbox1 ve label1'e atama birlikte calışşsın.for baglama yapmasın.yani for'n bitmesini beklemesinler listbox1.items.add(textbox1.text.substring(k,1)); label1.text=label1.text+textbox1.text.substring(k,1); //MessageBox.Show(textBox1.Text.Substring(k,1)); 28

Class Yapısı Bir form yaratılır ve üzerinde değişkenler oluşturulur. Project - add class ile class yaratılır ve projeye otomatik dahil olur. Biz üzerinde gereken düzeltmeleri ve değişken eklemeleri yaparız. using System; namespace class_yapı /// <summary> /// Summary description for Class1. /// </summary> public class aile public static string adi_soyadi; public static string adresi; public static int yasi; public static bool medeni_hal; public static string meslegi; public static long maasi; public const int sabit=1000; public static long maashesapla(int katsayi,int kidem) return sabit*katsayi*kidem; 29

Butona( hesapla butonu ) tıklayarak kodlama yapılır. private void button1_click(object sender, System.EventArgs e) aile.adi_soyadi=textbox1.text; aile.adresi=textbox2.text; aile.yasi=convert.toint32(textbox3.text); aile.medeni_hal=checkbox1.checked; aile.meslegi=combobox1.text; aile.maasi=aile.maashesapla(convert.toint32(textbox5.text), Convert.ToInt32(textBox6.Text)); textbox4.text=aile.maasi.tostring(); MessageBox.Show(aile.yasi.ToString()); özellikler 1. aile isminde bir class oluşturuldu 2. button1_click içersinde aile. ( noktaya tıklayınca) bir pencere gelir ve istedimiz değşkeni seceriz. Class oluşturulurken Değişenleri public static ( her yerde kullanılsın) tanımladıgımız için gelmektedir. Private tanımlarsak gelmez.o zaman yavru class oluştururuz. Private tanımlı class yapısı Project -- add class ile bir class oluşturulur. Taralı alanı faruk class ı olarak yazarız. using System; namespace class_yapı /// <summary> /// Summary description for Class2. /// </summary> public class faruk private int z=5; public int hesapla(int kidem) return kidem*z; 30

public faruk() // // TODO: Add constructor logic here // public static (ana class ) ve private ( yavru class ) Kullanımı Değişkenlerin public static ile tanımlanması : Bir class tanımlamada değişkenleri public static ile tanımlarsak butun tanımların içersinde kullanımda class ismini yazıp noktaya basınca değşkenler pencerede gelir, Secerek kullanmış oluruz. Class: public class faruk public static int z=5; public static int hesapla(int kidem) return kidem*z; Bir buton içersinde class kullanma : private void button2_click(object sender, System.EventArgs e) int sonuc; sonuc=faruk.hesapla(100); Form1.ActiveForm.Text=sonuc.ToString(); MessageBox.Show(sonuc.ToString()); textbox4.text=sonuc.tostring(); sonuc: biz buton içersinde kod yazarken faruk. da hesapla değişkenin bulundugu pencere gelir. Biz hesapla yı seceriz. Class taki değişkenler public static ile tanımlanmıştır. sonuc=faruk.hesapla(100); 31

hesap2 butona( button2_click) tıklayınca formun title da textbox3.text te ve messagebox ta 500 yazar. Değişkenlerin private ile tanımlanması : class ların içersindeki bütün değişkenler public static ile tanımlanmazlar. O zaman tüm her kodlamada bu değişkenlere kolayca ulaşabiliriz. Herkesin o değişkenlere ulaşmaması için değişkenleri private ile tanımlarız. Buton tanımlamada yavru class yaratarak( merve) merve üzerinden çalışma yapıyoruz.faruk class ından / içerinde private ( sadece o class ve form da kullan) tanımlanmış. Biz view bir class yaratmış oluyoruz. Merve. Yazınca değişkenlerin tanımlı oldugu pencere gelir. Faruk. da gelmez. Class : public class faruk private int z=5; public int hesapla(int kidem) return kidem*z; Bir buton içersinde class kullanma : private void button2_click(object sender, System.EventArgs e) int sonuc; faruk merve=new faruk(); // merve yavru class oluşturma sonuc=merve.hesapla(100); Form1.ActiveForm.Text=sonuc.ToString(); MessageBox.Show(sonuc.ToString()); textbox4.text=sonuc.tostring(); 32

sonuc: aynı şekilde hesap2 butona( button2_click) tıklayınca formun title da textbox3.text te ve messagebox ta 500 yazar. Class ta değiştirme Get ve set komutları vardır. Get de geriye doönecek deger i veririz. Set de değişecek değişkenin adını yazarız. Class: public class degistirme public string memleket; public string etiket get string yer; yer="bu arkadas"+memleket+" sehrinde oturmaktadır"; return yer; set memleket=value; // degişecek demektir public degistirme() // // TODO: Add constructor logic here // Bir buton içersinde kullanım : private void button3_click(object sender, System.EventArgs e) degistirme yeni=new degistirme(); yeni.memleket="denizli"; MessageBox.Show(yeni.etiket); 33

Class ta sadece okuma Class: public class sadeceokuma public readonly string isim="faruk senturk"; public string oku get return isim; Bir buton içersinde kullanım : sadeceokuma yeni=new sadeceokuma(); //yeni.isim="merve"; // bu atama hata verir. MessageBox.Show(yeni.isim); Class: Class ta yazma public class yaz public string isim="volkan senturk"; public string pamuk set isim=value; Bir buton içersinde kullanım : private void button5_click(object sender, System.EventArgs e) yaz yeni=new yaz(); yeni.isim="merve"; MessageBox.Show(yeni.isim); 34

Hata Yakalama ( try catch ) Hata durumunda Bir mesaj ve hata kodu ( try catch ) Hata durumunda farklı mesajlar ( try catch catch catch ) dogru veya hatalı çalışmasında mutlaka çalışsın (try-catch-finally) Hata durumunda Bir mesaj ve hata kodu private void button1_click(object sender, System.EventArgs e) int say1,say2; double tt; try say1=convert.toint32(textbox1.text); say2=convert.toint32(textbox2.text); tt=say1/say2; label1.text=tt.tostring(); catch( System.Exception hatano ) MessageBox.Show("degerleri dogru giriniz"); MessageBox.Show("Hata mesajı...:"+hatano); 35

Hata durumunda farklı mesajlar private void button2_click(object sender, System.EventArgs e) int say1,say2; double tt; try say1=convert.toint32(textbox1.text); say2=convert.toint32(textbox2.text); tt=say1/say2; label1.text=tt.tostring(); catch(formatexception hatano) MessageBox.Show("degerlere sayı giriniz"); catch(dividebyzeroexception hatano) MessageBox.Show("0 'a bolme hatası"); catch( System.Exception hatano ) MessageBox.Show("degerleri dogru giriniz"); MessageBox.Show("Hata mesajı...:"+hatano); dogru veya hatalı çalışmasında mutlaka çalışsın (finally) private int tam; private void button3_click(object sender, System.EventArgs e) int say1,say2; double tt; try say1=convert.toint32(textbox1.text); say2=convert.toint32(textbox2.text); tt=say1/say2; label1.text=tt.tostring(); catch(formatexception hatano) MessageBox.Show("degerlere sayı giriniz"); catch(dividebyzeroexception hatano) MessageBox.Show("0 'a bolme hatası"); 36

catch( System.Exception hatano ) MessageBox.Show("degerleri dogru giriniz"); MessageBox.Show("Hata mesajı...:"+hatano); finally tam++; MessageBox.Show(tam.ToString()); Fonksiyonlar Pozatife cevirme (Abs) Kusuratı yuvarlama ile cıkarma (Ceiling, Flor) Ondalık Kısmındaki sayıyı yuvarlama ( Math.Round ) En küçük, En büyuk sayıyı bulma ( Max,Min) Üslü kuvveti alma ( Math.Pow karesi,üçlü kuvveti ) Karekök alma (Math.Sqrt) Rasgele sayı ( Random ) Değer karşılaştırma ( Compare, Equals ) Dizin elemanları arasına karekter yerleştirme (join ) Uzunluk ( Lenght), Pozisyon bulma (IndexOf ) Karekter girişi ( Insert) Karekter Silme ( Remove ) Karekter Değiştirme ( Replace) Karekter çıkarma ( Substring) Büyük Harfe çevirme ( ToUpper ) küçük Harfe çevirme ( ToUpper ) Boşluğu cıkarma ( Trim) Tarih Fonsiyonları Directory Yaratma ( Create Directory ) Program Listeleme ( directory.getfiles ) Sürücü Listeleme (Directory.GetLogicalDrives ) Dosya Kopyalama Dosya Taşıma Dosya Silme Dosyanın directory,uzunluk ve ismi Yeni Bir Dosya oluşturma Bir TextBox alanı text dosyaya kayıt etme Bir Text Dosyayı Listitem a taşıma Textbox veya label a Text dosyadan okuma 37

Pozatife cevirme(abs) Eksili sayıları artıya çevirir. private void button1_click(object sender, System.EventArgs e) double x; x=math.abs(convert.todouble(textbox1.text)); label4.text=x.tostring(); Kusuratı yuvarlama ile atma(ceiling,floor) private void button2_click(object sender, System.EventArgs e) double x; x=math.ceiling(convert.todouble(textbox1.text)); label4.text=x.tostring(); Ceiling: Kusuratlı sayıları kusuratı atarak mutlaka bir büyüge cevirme negatifli sayıları sadece kusuratını atar. 25 ---> 25 32,60 ---> 33 32,01 ---> 33-32,01 ---> 32-32,60 ---> -32 Floor: Match.Floor ise tam tersini yapar. x=math.floor(convert.todouble(textbox1.text)); 25 ---> 25 32,60 ---> 32 32,01 ---> 32-32,01 ---> 33-32,60 ---> -33 Ondalık Kısmındaki sayıyı yuvarlama ( Math.Round ) Ondalık kısmındaki rakam sayısı.yuvarlama yapar tamsayı ise aynen alır. 100---> 100 25,45678 ---> 25.46 25.45478 ---> 25.45 private void button5_click(object sender, System.EventArgs e) double x; x=math.round(convert.todouble(textbox1.text),2); label4.text=x.tostring(); En küçük, En büyük sayıyı bulma ( max,min) private void button3_click(object sender, System.EventArgs e) // İki sayıdan büyügünü alma double x; x=math.max(300,200); // 300 alır label4.text=x.tostring(); // İki sayıdan küçüğünü alma 38

x=math.min(300,200); // 200 alır label5.text=x.tostring(); Üslü kuvveti alma ( Math.Pow karesi,uclu kuvveti ) private void button4_click(object sender, System.EventArgs e) // Convert.Todouble sayısala cevirmeyi yapar double x; x=math.pow(convert.todouble(textbox1.text),2); // karesini alır label4.text=x.tostring(); Karakök alma x=math.pow(convert.todouble(textbox1.text),3); // uclu kuvvetini alır label5.text=x.tostring(); private void button6_click(object sender, System.EventArgs e) double x; x=math.sqrt(100); // 10 yazar label4.text=x.tostring(); Rasgele sayı ( Random ) private void button7_click(object sender, System.EventArgs e) // Normal rasgele farklı sayı int say; Random rasgel=new Random(); say=rasgel.next()%20; // 0-20 arası sayı uretilir label4.text=say.tostring(); // 3 say=rasgel.next()%20; label5.text=say.tostring(); // 14 // Saatin salisinden faydalanarak her seferinde farklı sayı // butona tıklayınca mutlaka farklı sayı int say; DateTime zaman=datetime.now; Random rasgel=new Random( (int)zaman.millisecond ); say=rasgel.next()%20; label4.text=say.tostring(); say=rasgel.next()%20; label5.text=say.tostring(); // b dizinin 10 elamanına rasgele sayı uretme Byte[] b=new byte[10]; Random rnd=new Random(); rnd.nextbytes(b); // 10 elemanlı b dizin rasgele sayı olur 39

label4.text=b[1].tostring(); label5.text=b[5].tostring(); Değer karşılaştırma ( Compare,Equals, Concat, Empty ) iki degeri kontrol etme 1. yöntem: compare(.,. ) ----> 0 cıkarsa aynı 2. yöntem: Equals(.,. ) ----> true, false private void button9_click(object sender, System.EventArgs e) double x; x=string.compare("ataturk","at"); label4.text=x.tostring(); // 1: var, -1:yok, 0:iki deger aynı x=string.compare("ataturk","mer"); label5.text=x.tostring(); string bir,iki; bir="turkiye"; iki="ankara"; if(string.equals(bir,iki)==false) MessageBox.Show("degerler farklı"); // string deger birleştirme (Concat) string a1,a2; a1="merve"; a2="volkan"; textbox3.text=string.concat(a1,"mehmet",a2,"bahriye"); // string degerin içerisini boşaltma(empty) textbox1.text=""; textbox2.text=string.empty; Dizin elemanları arasına karekter yerleştirme (join ) private void button10_click(object sender, System.EventArgs e) string[] isim=new string[3] "faruk","merve","volkan"; MessageBox.Show(string.Join(" * ",isim,0,3)); // faruk * volkan * merve Uzunluk ( Lenght), Pozisyon bulma (IndexOf ) private void button11_click(object sender, System.EventArgs e) // pozisyonu bulma string isim="denizli"; // 7 karekter var. 0-6 pozisyon 40

int t; // MessageBox.Show(isim.Length.ToString()); // 7 // t=isim.indexof("d",0,isim.length); // 1. karekterden 7. karektere kadar bak // label4.text=t.tostring(); // 0.pozisyon // t=isim.indexof("i",0,isim.length); // label4.text=t.tostring(); // 3. pozisyon t=isim.indexof("i",5,2); //5. karekterden basla. 5+2= 7 karektere kadar bak label4.text=t.tostring(); // 6. pozisyon Karekter girişi ( Insert) private void button11_click_1(object sender, System.EventArgs e) string deger1="ege üniversitesi"; label4.text=deger1.insert(5,"-bilgi-"); //ege ü-bilgi-niversitesi Karekter Silme ( Remove ) private void button16_click(object sender, System.EventArgs e) string deger1="denizli"; label4.text=deger1.remove(3,2); //denli Karekter Değiştirme ( Replace) private void button13_click(object sender, System.EventArgs e) string deger1="denizli"; label4.text=deger1.replace("den","pam"); //pamizli Karekter çıkarma ( Substring) private void button14_click(object sender, System.EventArgs e) string deger1="denizli"; label4.text=deger1.substring(3,2); // istenilen karekter cıkarılır. iz Büyük Harfe çevirme ( ToUpper ) private void button15_click(object sender, System.EventArgs e) string deger1="denizli"; label4.text=deger1.toupper(); //DENİZLİ 41

küçük Harfe çevirme ( ToUpper ) private void button17_click(object sender, System.EventArgs e) string deger1="pamukkale"; label4.text=deger1.tolower(); //pamukkale Boşluğu cıkarma ( Trim) private void button18_click(object sender, System.EventArgs e) string deger1=" abc ";// 2 bosluk abc 2 bosluk = 7 karekter label4.text=deger1.length.tostring(); // 7 // label5.text=deger1.trimstart().length.tostring(); // 5 Bastaki 2 boşlugu atar // label5.text=deger1.trimend().length.tostring(); // 5 Sondaki 2 boşlugu atar label5.text=deger1.trim().length.tostring(); // 3 Bastakive sondaki 2 boşlugu atar Tarih Fonsiyonları private void button12_click(object sender, System.EventArgs e) //label4.text=datetime.maxvalue.tostring();//max tarih 31.12.9999 23:59:59 //label5.text=datetime.minvalue.tostring();// min tarih 01.01.001 00:00:00 //label6.text=datetime.now.tostring(); // aktif tarih ve saat //label7.text=datetime.today.tostring(); // aktif tarih //label4.text=datetime.today.day.tostring(); //gun'u verir //label5.text=convert.todatetime("05/02/2002").day.tostring(); //gun'u verir 5 //label5.text=convert.todatetime("05-02-2002").day.tostring(); // tarih - ile kullanıldı //label5.text=convert.todatetime(textbox1.text).day.tostring(); // textbox'tan deger alma //label4.text=datetime.today.month.tostring(); //ayı verir 10 //label5.text=datetime.today.year.tostring(); //yılı verir // label4.text=datetime.today.dayofyear.tostring(); //2bu gune kadar 275 gun vardır // label5.text=datetime.today.dayofweek.tostring(); // sunday // label6.text=datetime.today.addyears(2).tostring(); //2 yıl sonraki tarih.yıl ekleme // label7.text=datetime.today.addmonths(1).tostring(); //1 ay sonraki tarih.ay ekleme // label7.text=datetime.today.adddays(6).tostring(); //6 gun sonraki tarih.gun ekleme Directory Yaratma ( Create Directory ) private void button19_click(object sender, System.EventArgs e) // using System.IO; olarak ekleme yaparız // directory yaratma /* Directory.CreateDirectory("D:\\muh"); Directory.CreateDirectory("D:\\muh\\sabit"); Directory.CreateDirectory("D:\\muh\\bil"); // directory silme Directory.Delete("d:\\muh\\bil"); 42

if(directory.exists("d:\\muh\\sabit")==false) Directory.CreateDirectory("D:\\muh\\sabit"); if(directory.exists("d:\\muh\\bil")) Directory.Delete("D:\\muh\\bil"); */ // directory listeleme string[] far=directory.getdirectories("d:\\"); foreach(string tek in far ) listbox1.items.add(tek); Program Listeleme ( directory.getfiles ) private void button20_click(object sender, System.EventArgs e) // program listeleme string[] far=directory.getfiles("d:\\net"); foreach(string tek in far ) listbox1.items.add(tek); Sürücü Listeleme (Directory.GetLogicalDrives ) private void button21_click(object sender, System.EventArgs e) // sürücü listeleme string[] far=directory.getlogicaldrives(); foreach(string tek in far ) listbox1.items.add(tek); Dosya Kopyalama private void button22_click(object sender, System.EventArgs e) // using System.IO ; ekleme yapmalıyız // dosya kopyalama FileInfo dosya=new FileInfo("d:\\muh\\dene.txt"); // dosyayı isaretleriz dosya.copyto("d:\\muh\\gul.txt",true); // kopyalama Dosya Taşıma private void button23_click(object sender, System.EventArgs e) // dosya tasıma FileInfo dosya=new FileInfo("d:\\muh\\dene.txt"); // dosyayı isaretleriz dosya.moveto("d:\\muh\\can.txt"); // tasıma 43

Dosya Silme private void button24_click(object sender, System.EventArgs e) FileInfo dosya=new FileInfo("d:\\muh\\can.txt"); // dosyayı isaretleriz if(dosya.exists) dosya.delete(); MessageBox.Show("dosya silindi"); else MessageBox.Show("dosya bulunmadı"); Dosyanın directory,uzunluk ve ismi private void button25_click(object sender, System.EventArgs e) FileInfo dosya=new FileInfo("d:\\muh\\gul.txt"); label4.text=dosya.directory.tostring(); //dosyanın bulundugu directory label5.text=dosya.length.tostring(); // dosyanın uzunlugu label6.text=dosya.name; // dosyanın ismi Yeni Bir Dosya oluşturma private void button26_click(object sender, System.EventArgs e) StreamReader oku=new StreamReader("d:\\muh\\gul.txt"); StreamWriter yaz=new StreamWriter("d:\\muh\\bilanco.txt"); //StreamWriter yaz=new StreamWriter("\\\\server1\\kredi\\bilanco.txt"); network erişim string satir; while (( satir=oku.readline())!=null) yaz.writeline(satir); oku.close(); yaz.close(); Bir TextBox alanı text dosyaya kayıt etme private void button27_click(object sender, System.EventArgs e) // dosya olustur // textbox'ta birden fazla satır girmek için properties'de multiline=true yaparız StreamWriter yaz=new StreamWriter("d:\\muh\\person.txt"); yaz.writeline(textbox1.text); yaz.close(); 44

Bir Text Dosyayı Listitem a taşıma private void button28_click(object sender, System.EventArgs e) StreamReader oku=new StreamReader("d:\\muh\\gul.txt"); string satir; while (( satir=oku.readline())!=null) listbox1.items.add(satir); oku.close(); Textbox veya label a Text dosyadan okuma private void button29_click(object sender, System.EventArgs e) // farklı yöntemle tekbox veya label'a dosya okuma StreamReader oku=file.opentext("d:\\muh\\gul.txt"); textbox1.text=oku.readtoend(); oku.close(); 45

Events lar Mouse sol,sağ, orta buton tıkalyınca mesaj yazması. Mouse down veya Mouse up da aynı sonucu alırız. if(e.button==mousebuttons.left) MessageBox.Show("sol tusa bastınız.."); else if(e.button==mousebuttons.right) MessageBox.Show("sag tusa bastınız "); else if(e.button==mousebuttons.middle) MessageBox.Show("sag tusa bastınız "); label1.text=" x koordinatı:"+e.x+" y koordinatı..:"+e.y; Event Oyun ( Butona tıklayamama ) Mouse tıklamak için hareket edince butonda hareket eder. private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) 46

button1.left=e.x+30; button1.top=e.x+30; Event Açıklama click Mouse Sol botuna tıklama TextChanged Textbox içeriğinin değişmesi MouseDown Mouse da herhagi butona tıklama MouseUp MouseDown ile aynıdır MouseMove MouseDown ve MousUp gibidir. Yalnız tıklama ile degil, hareket iledir. MouseEnter Mouse üzerine gelince bir kez işler MouseHover Mouse hareketsiz kalırsa otomatik işler. Closing Form kapatılırken. e.cancel=true ile kapanması engellenir. Closed Farm Kapatılırken. E.Cancel kullanılamaz.değişiklik kaydedilsinmi uyarı kullanılır. Load Form çalıştırıldığında devreye girer. Enter Textbox değişkene gelince ( tab ile ) çalışır Leave Textbox değişkeni geçince çalışır. Validating Textbox değişkene gelince calışır AutoSizeChanged Size değişince EnabledChanged Kontrolün Enabled özelliği değişince fontchanged Font değişince ForeColorChanged Yazı iç rengi değişmesince BackColorChanged Yazı diş rengin değişmesiyle MultiLineChanged Textbox da multiline true veya false olunca ReadOnlyChanged Read özelliği değişince KeyDown Klavyeden herhangi bir tuşa basılmasıyla Klavyedeki Tuşların kontrolu private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) if(e.keycode==keys.a) MessageBox.Show("A tuşuna basıldı"); else if(e.keycode==keys.b) MessageBox.Show("B tuşuna basılıd"); 47

else if(e.keycode==keys.b) MessageBox.Show("B tuşuna basıldı"); else if(e.keycode==keys.left) MessageBox.Show("Sol ok tuşuna basıldı"); else if(e.keycode==keys.f3) MessageBox.Show("F3 tuşuna basıldı"); else if(e.keycode==keys.escape) MessageBox.Show("escape tuşuna basıldı"); else if(e.keycode==keys.pageup) MessageBox.Show("Page up tuşuna basıldı"); else MessageBox.Show("Herhangi bir tuşa bastınız"); label1.text=e.keyvalue.tostring(); // ascii kodu yazar Alt,Control, Shift ile birlikte basılan kontrol private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) if(e.alt==true) if(e.keycode==keys.return) MessageBox.Show("alt-enter'a basıldı.."); if(e.control==true) if(e.keycode==keys.return) MessageBox.Show("Control-enter'a basıldı.."); if(e.shift==true) if(e.keycode==keys.d) MessageBox.Show("shift-D'e basıldı.."); 48

Formu kapatma Kapatmada soru sordurma. Kapatmayı durdurabiliriz( e.cancel=true ; ) private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) DialogResult mesaj; mesaj=messagebox.show("kapatmak istiyormusunuz", "kapat",messageboxbuttons.yesno); if ( mesaj==dialogresult.no) e.cancel=true; // Kapatmayı durdurma else MessageBox.Show("program kapatılıyor.."); Kesin Kapatma. Yalnız son bir işlem ( kayıt gibi ) yapma private void Form1_Closed(object sender, System.EventArgs e) DialogResult mesaj; mesaj=messagebox.show("degişiklikler kaydedilsinmi","kapat",messageboxbuttons.yesno); if ( mesaj==dialogresult.yes) // kayıt kodları yazılır MessageBox.Show(" değişiklikler kaydedildi..."); Form Yüklemede şifre kullanma private void Form1_Load(object sender, System.EventArgs e) // project-add referance ile Mic. visual basic runtime eklenir. int sayi=1; string sifre; sifre= Microsoft.VisualBasic.Interaction.InputBox("sifreyi giriniz", "sifre girisi","",100,200); while(sifre!="faruk") if(sayi>3) break; else sifre= Microsoft.VisualBasic.Interaction.InputBox("sifreyi giriniz","sifre girisi","sifre tekrar",100,200); sayi++; if(sayi>=3) MessageBox.Show("3 hakkınızıda bilemediniz.yeniden deneyiniz"); Application.Exit(); 49

Bazı tuşların textbox a girişini Engelleme private void textbox1_keypress(object sender, System.Windows.Forms.KeyPressEventArgs e) // 48-57 sayılar. A=65,B=66,C=67,D=68. Backspace=10 // A,B,C,D harflerinin textbox'a girilmesini engellemek için; if ((e.keychar >= (char)65) && (e.keychar <= (char)68)) if ((e.keychar > (char)10) && (e.keychar < (char)48) (e.keychar > (char)57)) e.handled = true; label1.text = e.keychar.tostring(); // bütün tusları label'a yazdırma Form Başlığı button gibi yerde değişiklik: Form1.ActiveForm.Text= personel sistemi ; veya This.Text= personel sistemi Load event ta ( yükleme sırasında ) : This.Text= personel sistemi ; 50

Esc ve Enter Tuşlarını button lara tanımlama Biz form load avent ta veya form active event ta Enter veya esc basınca buton tıklanmış gibi çalışacak hale getiririz. Active de tanım yaparsak Form1.ActiveForm, load da tanım yaparsak this kullanırız. Form Load ta tanımlama private void Form1_Load(object sender, System.EventArgs e) this.text="muhasebe sistemi"; this.acceptbutton=button1; // enter tuşuna basınca button1 calışır this.cancelbutton=button2; // esc tuşuna basınca button2 çalışır Form Active de tanım private void Form1_Activated(object sender, System.EventArgs e) Form1.ActiveForm.AcceptButton=button1; Form1.ActiveForm.CancelButton=button2; private void button1_click(object sender, System.EventArgs e) MessageBox.Show("enter basıldı.."); private void button2_click(object sender, System.EventArgs e) MessageBox.Show("ESC basıldı.."); 51

Form özelliklerini değiştirme Forms a ait özellikleri properties penceresinden manual veya action dan form1_load a kodlama ile yapılır. 52

Buton ekleme Forms üzerinden veya kodlama ile yaparız. Button yeni = new Button(); this.controls.add(yeni); yeni.left = 50; yeni.top = 100; yeni.text = "arama"; 53

Menu Oluşturma 1.Yöntem : Buton ile Form Çagırma C# girince form1 gelir. 3 adet ek form oluşturulur. ( Project --- add windows form ) 54

Form1 ana formundan form2,form3,form4 ü buton ile çağırıyoruz. Form Çağırma Form2 pen=new Form2(); pen.show(); Form2 gelir.form2 ve form1 de çalışabiliriz. Form2 pen=new Form2(); pen.showdialog(); Form2 gelir.sadece form2 de çalışabiliriz.aktif olan form2 ye izin verir. Uygulamadan Çıkış Application.Exit(); Form u kapatma this.close(); aktif formu kapat. Form2.ActiveForm.Close(); form2'yi kapat Formu gizleme this.hide(); Aktif form'u gizler. Form4.ActiveForm.Hide(); Form4 ü gizler. Anamenu Formu private void button1_click(object sender, System.EventArgs e) Form2 pen=new Form2(); pen.show(); private void button2_click(object sender, System.EventArgs e) Form3 pen=new Form3(); pen.showdialog(); private void button4_click(object sender, System.EventArgs e) Form4 rapor=new Form4(); rapor.show(); private void button3_click(object sender, System.EventArgs e) Application.Exit(); Personel Formu private void button1_click(object sender, System.EventArgs e) this.close(); // aktif formu kapat.altaki ile aynıdır // Form2.ActiveForm.Close(); // form2'yi kapat 55

Maas Formu private void button1_click(object sender, System.EventArgs e) this.close(); Forms4 formu private void button1_click(object sender, System.EventArgs e) //this.hide(); // form4'ü gizler. Daha cok ths.close() kullanırız. Form4.ActiveForm.Hide(); // " " " 2.Yöntem : MenuStrip ile toolbox dan Mainmenu cift tıklanır Form1 in altına gelen mainmenu ye bir kez tıklarız. Formun üstünde Type Here cıkar. Type Here üzerine tanımlar yazarız. Altına sigorta gibi şeklinde menu isimlerini gireriz. Sigortaya, personel e, Cıkış2a cift tıklayıp kodlamayı yaparız. Kodlama Midi-child form için form özelliklerinde IsMdiContainer=true yaparız. Form cagırırken mmdiparent=this özelliğini kullanırız. private void cıkıstoolstripmenuitem_click(object sender, EventArgs e) Application.Exit(); private void ssktoolstripmenuitem_click(object sender, EventArgs e) Form2 ssk=new Form2(); ssk.mdiparent=this; // child form ( yavru) için ssk.show(); 56

private void faturatoolstripmenuitem_click(object sender, EventArgs e) MessageBox.Show(" Sayfa yapım asamasındadır..."); 57

3.Yöntem : ToolStrip ile Resim butonlu menu hazırlamadır. toolstrip sürüklenerek veya çift tıklanarak form1 in üstünde cubuk şeklinde yer alır. Form1 sayfasının daha iyi menülü görüntüsünü saglamak için ; lsmdicontainer i true yaparız. Butonların Özelliklerinde(properties) 58

o o o Text : toolbar daki butonun görünen adı. personel,stok,cıkıs Tooltip : runtime da Mouse butonun üzerine gidince help bilgisi Image : Buton resmi Resimli butonlara tıklayarak kodlama yaparız. private void toolstripbutton1_click(object sender, EventArgs e) Form2 yeni = new Form2(); // yeni.mdiparent = this; // Form2, form1 içersinde baglı gelir. yeni.show(); private void toolstripbutton2_click(object sender, EventArgs e) MessageBox.Show("sayfa yapım asamasındadır.."); private void toolstripbutton4_click(object sender, EventArgs e) Application.Exit(); 59

Web Sayfasına Bağlantı Toolbox dan linklabel tıklanır. Text ten ismi değiştirilir. ( milliyet gazatesi ) Linklabel ın font u, Linkcolor ı properties lerden değiştirilir. Form load event ta milliyet gazatesi yazısının kac karekteri tıklamayı kabuletsin yapılır. Yani Mouse ile üzerine gelince tıklamaya müsait olsun yapılır. Private void Form1_Load(object sender, System.EventArgs e) linklabel1.links.add(0,8, http://www.milliyet.com.tr ); Web adresine gitme linlabel etiketine cift tıklayarak yazılır. private void linklabel1_linkclicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) System.Diagnostics.Process.Start(e.Link.LinkData.ToString()); Runtime da Milliyet gazatesine cift tıklayınca www.milliyet.com.tr a gider. Yani Internet Explorer çalışır. 60

Cursor Textbox da iken F1 basınca Yardım ( helpprovider ) private void Form1_Load(object sender, System.EventArgs e) helpprovider1.sethelpstring(textbox1,"kodu girilecek"); helpprovider1.sethelpstring(textbox2,"tekstil birim fiyatı girilecek"); helpprovider1.sethelpstring(textbox3,"adet girilecek"); Form1_load : Form yüklenirken calışır. 61

Hata kontrol Mesajı ( errorprovider ) Değişkenlere istenilen deger girilmedi zaman kırmızı yuvarlak olarak işaretle gösterir. Yuvarlak daire üzerine Mouse ile gelince mesaj verir. private void button1_click(object sender, System.EventArgs e) if(textbox1.text=="") errorprovider1.seterror(textbox1,"kodu giriniz"); else errorprovider1.seterror(textbox1,""); if(textbox2.text=="") errorprovider1.seterror(textbox2,"fiyatı giriniz"); else errorprovider1.seterror(textbox2,""); if(textbox3.text=="") errorprovider1.seterror(textbox3,"adeti giriniz"); else errorprovider1.seterror(textbox3,""); 62

Büyük, Küçük ve şifreli Giriş Örnek TextBox kodlamaları : textrbox1.width=textbox1.width+50; textbox1.font= new Font ( Arial,20); textbox2.focus(); // textbox2 git TextBox textbox1=new TextBox(); textbox1.location=new Point(0,0); textbox1.size=new Size(152,20); 63

Button Özellikleri TextBox veya Buton üzerine Mouse ile gelince acıklama yazması ALT ile bir karekter (A,B gibi ) tıklayıca buton çalışır Butonun görüntü değişikliği private void Form1_Load(object sender, System.EventArgs e) ToolTip goster=new ToolTip(); goster.settooltip(this.button1,"personel hesaplama yapar");// button üzerine gelince yazar goster.settooltip(this.textbox1,"urunun fiyatı"); // textbox'ın üzerine gelince yazar button1.text="&rapor"; // alt tusuyla R 'de çalışır 64

Checkbox, Radiobutton, Listbox,combobox Kontrolu checkbox private void button1_click(object sender, System.EventArgs e) checkbox2.checked=true; checkbox2.flatstyle=flatstyle.flat; checkbox3.flatstyle=flatstyle.popup; if (checkbox1.checked==true) MessageBox.Show("Đngilizce biliniyor.."); else MessageBox.Show("Đngilizce bilinmiyor.."); RadioButton 1. Groupbox cift tıklanır 2. groupbox seçiliyken radiobutton cift tıklanır private void button2_click(object sender, System.EventArgs e) radiobutton1.checked=true; if (radiobutton5.checked==false) MessageBox.Show("fransızca bilmiyor.."); 65

ListBox private void button3_click(object sender, System.EventArgs e) listbox1.items.add("mehmet"); // ekleme // if (textbox1.text!="") listbox1.items.add(textbox1.text); textbox1.text=listbox1.text; // Secili olanı texbox'a at listbox1.items.remove("merve");// Silme listbox1.setselected(0,true); // ilk kayıtı sec MessageBox.Show(listBox1.Items.Count.ToString()); // toplam Combobox private void button4_click(object sender, System.EventArgs e) MessageBox.Show(comboBox1.Text);// secili elemanı yazar MessageBox.Show(comboBox1.SelectedIndex.ToString()); // secili elamanın index nosunu verir 0'dan başlar 66

Tabmenu hazırlama Toolbox dan tabcontrol cift tıklanarak form1 e tabmenu getirilir. Tabemenu üzerinde sağ Mouse- add tab ile tab sayfa lar eklenir.( tabpage2 gibi) Tabpage lerin ismi değiştiririz. Tabmenudeki tabpage2 tıklarız - altındaki diktörtgene tıklarız -- properties den Text in degerini ( tabpage2) değiştiririz. Tabmenu nin içindeki önce tabpage1( musteri) sonra diktörtgen alan tıklanır.ve içerine textbox veya label getiririz.(toolbox tan cift tıklayarak ). Aynı işkelemi tabpage2(ssk) içinde yaparız. 67

private void button1_click(object sender, System.EventArgs e) tabcontrol1.selectedtab=tabpage2; // ssk a gecer Agaç görünümlü Kontrol ( treeview ) 68

private void button2_click(object sender, System.EventArgs e) label3.text=treeview1.selectednode.text; // secili olan satırı gosterir //label3.text=treeview1.selectednode.index.tostring(); //secili elemanın kacıncı pozisyon oldugu yazar //label3.text=treeview1.nodes.count.tostring();//ana kayıtların toplam sayısı // ********** EKLEME *************************** //treeview1.nodes.add("ankara");//en sona ana ekleme yapar //treeview1.selectednode.nodes.add("bogazkoy");//secili olana ekler //treeview1.nodes[0].nodes.add("bornova"); //ilk kayıta baglı alt ekleme //treeview1.nodes[0].nodes[0].nodes.add("belkahve"); //ilk kayıta baglı alt kayıtın altına ekler //treeview1.nodes[3].nodes.add("bakırkoy"); //4. kayıta baglı alt ekleme // *********** SILME ************************** //treeview1.nodes.remove(treeview1.selectednode);//secimli olanı siler //treeview1.nodes.remove(treeview1.nodes[1]);// 1.pozisyonu siler //treeview1.nodes.clear();// hepsini siler //treeview1.checkboxes=true;//secimli kare eklenir //treeview1.expandall(); //alt kayıtları acar //treeview1.collapseall();// alt kayıtları toplar //treeview1.showlines=true;//kenarındaki cizgileri gosterir veya kaldırır //label3.text=treeview1.selectednode.checked.tostring();// sectigim kayıtte checkbox işaretlimi.true,false imagelist ve listview imagelist ve listview toolbox tan eklenir. İmagelist e resimler eklenir( imagelist1- properties(images) -- add) 69

private void button3_click(object sender, System.EventArgs e) listview1.items.add("person"); listview1.items.add("muh-d",0);//imagelist'deki 0 pozisyondaki resmide ekle //listview1.clear();// hepsini siler //listview1.items.removeat(1);//1. pozisyonu, yani 2.kayıtı siler //label5.text=listview1.items.count.tostring(); // kayıt sayısını verir Tarih Secme(DateTimePicker ) -- Cıkan tarih menusunden tarih seceriz. 70

private void button1_click(object sender, System.EventArgs e) label1.text=datetimepicker1.text;// secilen tarihi alır Scrollbar kontrolu dikey ve yatay scroll saga,sola veya ust,alta gidince resmin boyutu değişir. private void vscrollbar1_scroll(object sender, System.Windows.Forms.ScrollEventArgs e) picturebox1.height=vscrollbar1.value+1; private void hscrollbar1_scroll(object sender, System.Windows.Forms.ScrollEventArgs e) picturebox1.width=hscrollbar1.value+1; 71

Timer ( Zaman Kontrolu ) public static string mesaj="pamukkale Üniversitesi Egitim Fakultesi Bote 2.Sınıf"; public static int x=1; private void Form1_Load(object sender, System.EventArgs e) timer1.interval=500; //1 sn bekle timer1.enabled=true; // timer baslar //timer1.start(); // timer baslar // timer1.stop(); // timer durur //timer1.enabled=false; // timer durur private void timer1_tick(object sender, System.EventArgs e) label1.text=mesaj.substring(x,mesaj.length-x); if(x==mesaj.length-1)x=0; x++; 72

statusstrip ( Formun altında mesaj verir, Kullanıcıyı bilgilendirme ) Formun alt tarafında durum cubugu oluşturarak kullanıcıyı bilgilemdirme yapabiliriz. toolstripstatuslabel1.text = "kodu ve adı giriniz"; gibi. private void button1_click(object sender, EventArgs e) toolstripstatuslabel1.text = "kodu ve adı giriniz"; 73

Dosya okuma ve yazma( openfiledialog,savefiledialog ) using System.IO; //ekleme yapılmalıdır. Sadece dosya isimlerini getirme : private void button3_click(object sender, EventArgs e) //openfiledialog1.showdialog();// acma penceresi.tek kullanılabilir. openfiledialog1.title = "personel resim dosyası";//gelecek pencerenin baslıgı openfiledialog1.defaultext = "exe";//varsayılan extention exe kullan openfiledialog1.filter = "jpg files *.jpg butun file *.*"; // iki filter openfiledialog1.filterindex = 1; // 1.filterı kullan(*.jpg" openfiledialog1.initialdirectory = "d:\\temp"; openfiledialog1.multiselect = true;// shiftle birden fazla dosya ac openfiledialog1.showdialog();// acma penceresi gelir //label1.text=openfiledialog1.filename; // bir dosya için foreach (string muh in openfiledialog1.filenames) // birden fazla dosya için //label1.text = label1.text + " - " + muh; // label1'e getirme textbox1.text = textbox1.text + " - " + muh; // textbox1'e getirme dosya okuma : text bir dosyadan okuma private void button1_click(object sender, EventArgs e) string satir; openfiledialog1.title = "dosya okuma"; openfiledialog1.showdialog(); StreamReader oku = new StreamReader(openFileDialog1.FileName); while ((satir = oku.readline())!= null) textbox1.text += satir + (char)13 + (char)10; oku.close(); 74

dosya yazma: Hazır bir text dosyasına kayıt eder private void button2_click(object sender, EventArgs e) string satir; openfiledialog1.title = "dosya yazma"; openfiledialog1.showdialog(); StreamWriter yaz = new StreamWriter(openFileDialog1.FileName); yaz.writeline(textbox1.text); yaz.close(); TrackBar Bir resmin büyütülüp, küçültülmesi private void trackbar1_scroll(object sender, System.EventArgs e) picturebox1.width=trackbar1.value*10; picturebox1.height=trackbar1.value*10; private void trackbar1_scroll(object sender, EventArgs e) //MessageBox.Show(trackBar1.Value.ToString());// trackbar 0-10 arasındaki degeri picturebox1.width = trackbar1.value * 20; picturebox1.height = trackbar1.value * 20; 75

progressbar Toolbox dan progressbar ı cift tıklayarak getiririz. Prograssbar ın properties degeri 0-100 arasın value dir. Biz istersek properties den bu degerleri degiştirebiliriz. Progressbar da deger artışını göstermek için timer dan yararlandık.baslat buton da timer ı baslattık. Dur butonda durdurduk.aynı zamanda label1 dede progressbar ın value degerini yazdırdık. private void timer1_tick(object sender, EventArgs e) if (progressbar1.value <= 95) progressbar1.value = progressbar1.value + 5; else progressbar1.value = 0; label1.text = "% " + progressbar1.value.tostring() + " tamamlandı.."; private void button1_click(object sender, EventArgs e) timer1.interval = 400; // 1000: 1 saniye timer1.enabled = true; private void button2_click(object sender, EventArgs e) timer1.enabled = false; 76

tooltip Objeleri ( resim,textbox,label ) üzerine geldiğimizde açıklama vermesidir. Formun yüklenmesi event ta ( Form1_Load) her obje ( textbox,label,buton ) için tanım yaparız. private void Form1_Load(object sender, System.EventArgs e) tooltip1.settooltip(label1,"progressbar'ın yüzdeliklerini gösterir"); tooltip1.settooltip(button1,"progress'i baslatır.."); tooltip1.settooltip(button2,"progress'i durdurur.."); Drag& Drop Yöntemi Toolbox dan iki adet listbox ı forma getiririz. Listbox1 e 3 adet üniversite kayıtı girilir. Lisbox1- properties - Items 77

listbox2 ye gelen sürüklenmiş nesneyi kabul et: private void Form1_Load(object sender, System.EventArgs e) listbox2.allowdrop=true; listbox de Mouse ile tutularak sürüklenmek istenek kayıtı al : private void listbox1_mousedown(object sender, System.Windows.Forms.MouseEventArgs e) Point nokta=new Point(e.X,e.Y); int index=listbox1.indexfrompoint(nokta); if(e.button==mousebuttons.left) listbox1.dodragdrop(listbox1.items[index].tostring(),dragdropeffects.all); gelen kayıtı listbox2 de kopya edecegim : private void listbox2_dragover(object sender, System.Windows.Forms.DragEventArgs e) if(e.keystate==1) // hicbir tuş basılı degilse e.effect=dragdropeffects.copy; // copy, All, lint,mode,scroll listebox2 ye kayıtı ekle, listbox1 den sil: private void listbox2_dragdrop(object sender, System.Windows.Forms.DragEventArgs e) listbox2.items.add(e.data.getdata(dataformats.text).tostring()); listbox1.items.remove(e.data.getdata(dataformats.text).tostring()); 78

Registry File okuma,yazma Okuma: using Microsoft.Win32; // Ekle private void button1_click(object sender, System.EventArgs e) label1.text=registry.currentuser.opensubkey("control Panel").OpenSubKey("Colors").GetValue("Menu").ToString(); Kayıt : private void button2_click(object sender, System.EventArgs e) Registry.CurrentUser.CreateSubKey("pamukkale").CreateSubKey("kullanıcılar").SetValue("volkan",1240); Değiştirme: private void button3_click(object sender, System.EventArgs e) //directory'ler oldugu için sadece volkanın degeri 5000 olarak degiştirilir. Registry.CurrentUser.CreateSubKey("pamukkale").CreateSubKey("kullanıcılar").SetValue("volkan",5000); 79

Silme: private void button4_click(object sender, System.EventArgs e) // degeri silme Registry.CurrentUser.CreateSubKey("pamukkale").CreateSubKey("kullanıcılar").DeleteValue("volkan"); // directory ve altını silme Registry.CurrentUser.CreateSubKey("pamukkale").DeleteSubKeyTree("kullanıcılar"); Registry.CurrentUser.DeleteSubKeyTree("pamukkale"); 80

User,Şifre ile Form Giriş Hatırlatma: Önceden kayıt ettiğimizi düşünelim. kullanıcı: volkan, sifre:1240 düşünelim. Registry.CurrentUser.CreateSubKey("pamukkale").CreateSubKey("kullanıcılar").SetValue("volkan",1240); Sifre=Registry.CurrentUser.OpenSubKey("pamukkale").OpenSubKey("kullanıcılar").GetValue(textBox 1.Text).ToString(); ---- textbox1 e volkan girersek sifre 1240 olarak okunur. private static string sifre; private void button5_click(object sender, System.EventArgs e) try sifre=registry.currentuser.opensubkey("pamukkale").opensubkey("kullanıcılar").getvalue(textbox1.text).tostring(); catch textbox1.resettext(); textbox2.resettext(); textbox1.focus(); if(sifre==textbox2.text) Form2 yeni=new Form2(); yeni.show(); else textbox1.resettext(); textbox2.resettext(); textbox1.focus(); label1.text="sifre yanlıs.."; 81

User Kontrolu Bazı ekran formlarını belirli kurallarda şablon olarak hazırlayıp diğer formlarda kullanmayı sağlar. Kontrol Hazırlama Kontrol kullanma Hazırlama : Bir textbox ( sadece sayısal girişin oldugu not giriş alanı) hazırlayıp, bu şablonu her form da kullanalım. Form1 e Bir label ve textbox getirelim. 82

Kodlamasını yapalım. o Public class ve public in isimlerini değiştirelim. Çünkü Form larda kullanırken bu ismi sürükleyecegiz. Kontrol yapalım. o Bu textbox alana sadece sayılar girelim. Bu textbox ı normal formalarda kullandıgımız gibi ( icersine deger atma veya degerin alma gibi ) kullanamayız. Bu yüzden yedekdegiş isminde bir properties de bulunan bir degisken tanımlayıp bunu kullanıyoruz. private void textbox1_keypress(object sender, System.Windows.Forms.KeyPressEventArgs e) if(e.keychar>=(char)58 (e.keychar<=(char)47)) // rakam dısında if(e.keychar!=(char)8) // backspace tusu e.handled=true; // basılan tus iptal public string yedekdegis get return textbox1.text; // textbox'a girilen degeri yedekdegis'e al set textbox1.text=value.tostring(); // yedekdegis'teki properties veya deger girişi textbox1'a al 83

Çalıştırıyoruz ve bir dll üretiyor. Kullanma : Toolbox penceresine bu hazırlamış oldugumuz kontrolu (userkontrol.dll) getiriyoruz. ( toolbox pencersinde -- sağ Mouse - add/remove items -.Net framework components -- browse --- userkontrol.dll - ok ). Ayrıca Toolbox a gelen kontrol dll i sürükleyerek forma getiriyoruz. 84

Bir buton tanımlayıp, içersinde kodlama yapıyoruz. Kontrol1 in yedekdegis i messagebox ile ekranda yazdırıyoruz ve yedekdegis e 250 degerini atıyoruz. 85

Microsoft Access ile kayıt işlemleri 1.Yöntem: Visual c# projesi yaratılır. Data Sources ( icon yoksa Data -- show data sources ile getiririz) --- add new data source veya Data - add New data source ile Access dosyası ile baglantı kurulur. 86

87

Data source penceresinde oluşan adres Access table sürükleyerek sayfaya bırakılır. Grid objesi,ileri,geri cubugu ve bağlantı iconları otomatik oluşur. F5 ile bilgileri görebiliriz. 2.Yöntem: Visual c# projesi yaratılır. 88

Button ve datagridview tık tık yaparak veya sürükleyerek sayfaya getirilir. Datagrid1 in özelliklerinden datasource a Access dosyasını getiririz. 89

Sayfa altında bağlantı iconları oluşur. 90

Datagridview1 in datasource unu none yaparak button a cift tıklar ve kodlamayı yaparız. datagridview1.datasource = adresbindingsource; F5 ile veya debug start debugging veya çalıştırma iconu ile çalıştırdıgımız zaman button a tıklarsak listeyi görebiliriz. 91

92

3.Yöntem: Visual c# projesi yaratılır. Button ve datagridview tık tık yaparak veya sürükleyerek sayfaya getirilir. 93

BindingSource iconu sürükleyerek veya tık tık yaparak sayfaya getirilir. Bindingsource --- özelliklerden datasource a Access dosyası girilir. 94

95

Data member a adres table secilir. Bu arada persondataset adrestableadaptor iconları sayfada oluşur. Button a cift tıklatarak kodlama yazılır.ve F5 ile çalıştırız ve butona tıklayınca sonucu görürürüz. datagridview1.datasource = bindingsource1; 96

97

Texbox larda gösterme ve önceki, sonraki kayıtlara gecme Visual c# projesi yaratılır. Button,Label ve Texbox tık tık yaparak veya sürükleyerek veya bir kez sayfaya getirdikten sonra copy-paste ile getiririz. 98

Label, button objelerin özelliklerden ismini değiştiririz. bindingsource1, sayfaya getirilir. Daha sonra özelliklerden DataSource değerine Access dosyası, DataMember değerine Access table getirilir. 99

BindingSource1 in DataSource değerine Access dosyası girilir. 100

DataMember değerine adres table ı girilir. Önceden getirdiğimiz BindingSource1 yanında PersonDataSet ve AdresTableAdaptor iconları otomatik oluşur. 101

Butonlara tek tek tıklanarak kodlama yapılır. private void Form1_Load(object sender, EventArgs e) // form ilk acılınca this.adrestableadapter.fill(this.persondataset.adres); textbox1.databindings.add("text", persondataset.adres, "nosu"); textbox2.databindings.add("text", persondataset.adres, "adi"); textbox3.databindings.add("text", persondataset.adres, "soyadi"); textbox4.databindings.add("text", persondataset.adres, "sehir"); textbox5.databindings.add("text", persondataset.adres, "tel"); private void button1_click(object sender, EventArgs e) // ilk kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; sonra.position = 0; private void button2_click(object sender, EventArgs e) //Önceki kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; if (sonra.position <= 0) MessageBox.Show("baska kayıt kalmadı.ilk kayıttasınız"); else sonra.position -= 1; private void button3_click(object sender, EventArgs e) // Sonraki kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; if (sonra.position >= sonra.count - 1) MessageBox.Show("baska kayıt kalmadı.son kayıttasınız"); else sonra.position += 1; private void button4_click(object sender, EventArgs e) // En son kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; sonra.position = sonra.count - 1; private void button5_click(object sender, EventArgs e) // Kayıt Silme CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; DialogResult son; son = MessageBox.Show("kayıtı silmek istiyormusunuz...", "silme kontrolu", MessageBoxButtons.YesNo); if (son == DialogResult.Yes) 102

sonra.removeat(sonra.position); adrestableadapter.update(persondataset.adres); else MessageBox.Show("kayıt silinmedi..."); private void button6_click(object sender, EventArgs e) // database kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; sonra.endcurrentedit(); // dataset'e (ram) kayıt adrestableadapter.update(persondataset.adres); // database'e kayıt MessageBox.Show("Database kayıt yapıldı.."); private void button7_click(object sender, EventArgs e) // Arama int t = 0, b = 0; CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; foreach (DataRow satir in persondataset.adres.rows) if (satir[0].tostring() == textbox6.text) sonra.position = t; b = 1; return; //for'dan cık t++; if (b == 0) MessageBox.Show("kayıt bulunamadı..."); private void button8_click(object sender, EventArgs e) // Kayıt giriş başlama CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; sonra.addnew(); textbox1.focus(); private void Form1_FormClosed(object sender, FormClosedEventArgs e) // form cıkışta otomatik database'e kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; sonra.endcurrentedit(); // datase'e(ram) kayıt adrestableadapter.update(persondataset.adres); // database'e kayıt private void button9_click(object sender, EventArgs e) Application.Exit(); 103

Form dan cıkarken otomatik bir kodlama çalışması için formun boş bir yeri tıklanır. Özelliklerden Event( Triger) bölümde FormClosed cift tıklanarak aşagıdaki kodlama yapılır.yani cıkışta otomatik kayıt yapsın. private void Form1_FormClosed(object sender, FormClosedEventArgs e) // form cıkışta otomatik database'e kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[personDataSet.adres]; sonra.endcurrentedit(); // datase'e(ram) kayıt adrestableadapter.update(persondataset.adres); // database'e kayıt Fonksiyonlu Kullanım private void Form1_Load(object sender, EventArgs e) // form ilk acılınca this.adrestableadapter.fill(this.persondataset.adres); textbox1.databindings.add("text", persondataset.adres, "nosu"); textbox2.databindings.add("text", persondataset.adres, "adi"); textbox3.databindings.add("text", persondataset.adres, "soyadi"); textbox4.databindings.add("text", persondataset.adres, "sehir"); textbox5.databindings.add("text", persondataset.adres, "tel"); private CurrencyManager sonra; private void arac(persondataset aa) //private void arac(dataset aa) //sonra = (CurrencyManager)this.BindingContext[aa.Tables[0]]; sonra = (CurrencyManager)BindingContext[aa.adres]; private void button1_click(object sender, EventArgs e) // ilk kayıt arac(persondataset); sonra.position = 0; 104

private void button2_click(object sender, EventArgs e) //Önceki kayıt arac(persondataset); if (sonra.position <= 0) MessageBox.Show("baska kayıt kalmadı.ilk kayıttasınız"); else sonra.position -= 1; private void button3_click(object sender, EventArgs e) // Sonraki kayıt arac(persondataset); if (sonra.position >= sonra.count - 1) MessageBox.Show("baska kayıt kalmadı.son kayıttasınız"); else sonra.position += 1; private void button4_click(object sender, EventArgs e) // En son kayıt arac(persondataset); sonra.position = sonra.count - 1; private void button5_click(object sender, EventArgs e) // Kayıt Silme arac(persondataset); DialogResult son; son = MessageBox.Show("kayıtı silmek istiyormusunuz...", "silme kontrolu", MessageBoxButtons.YesNo); if (son == DialogResult.Yes) sonra.removeat(sonra.position); adrestableadapter.update(persondataset.adres); else MessageBox.Show("kayıt silinmedi..."); private void button6_click(object sender, EventArgs e) // database kayıt arac(persondataset); sonra.endcurrentedit(); // dataset'e (ram) kayıt adrestableadapter.update(persondataset.adres); // database'e kayıt MessageBox.Show("Database kayıt yapıldı.."); private void button7_click(object sender, EventArgs e) // Arama int t = 0, b = 0; arac(persondataset); 105

foreach (DataRow satir in persondataset.adres.rows) if (satir[0].tostring() == textbox6.text) sonra.position = t; b = 1; return; //for'dan cık t++; if (b == 0) MessageBox.Show("kayıt bulunamadı..."); private void button8_click(object sender, EventArgs e) // Kayıt giriş başlama arac(persondataset); sonra.addnew(); textbox1.focus(); private void Form1_FormClosed(object sender, FormClosedEventArgs e) // form cıkışta otomatik database'e kayıt arac(persondataset); sonra.endcurrentedit(); // datase'e(ram) kayıt adrestableadapter.update(persondataset.adres); // database'e kayıt private void button9_click(object sender, EventArgs e) Application.Exit(); 106

SQL cümleler ile Access erişimi Visual c# projesi yaratılır. Button,Label ve Texbox tık tık yaparak veya sürükleyerek veya bir kez sayfaya getirdikten sonra copy-paste ile getiririz. 107

Label, button objelerin özelliklerden ismini değiştiririz. Butonlara tek tek tıklanarak kodlama yapılır. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; // yeni eklendi namespace access_sql public partial class Form1 : Form public Form1() InitializeComponent(); // alttaki uc satır eklendi OleDbConnection baglan = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\\c#_calis\\person.accdb"); OleDbCommand veri; // yazmada kullanıyoruz OleDbDataReader oku; // okumada kullanıyoruz 108

private void temizleme() textbox1.text = null; textbox2.text = null; textbox3.text = null; textbox4.text = ""; textbox5.text = ""; textbox1.focus(); private void d_oku() oku = veri.executereader(); // oku.read(); sadece bu satırı kullanamayız.kayıt olmaz ise sorun verir.o yüzden while ile kullanırız. int kont = 0; while (oku.read()) kont = 1; textbox1.text = oku["nosu"].tostring(); textbox2.text = oku["adi"].tostring(); textbox3.text = oku["soyadi"].tostring(); textbox4.text = oku["sehir"].tostring(); textbox5.text = oku["tel"].tostring(); if (kont == 0) MessageBox.Show("kayıt yoktur..."); oku.close(); baglan.close(); private void Form1_Load(object sender, EventArgs e) private void button10_click(object sender, EventArgs e) // temizleme temizleme(); private void button1_click(object sender, EventArgs e) // ilk kayıt baglan.open(); veri = new OleDbCommand("select top 1 nosu,adi,soyadi,sehir,tel from adres order by nosu asc ", baglan); d_oku(); private void button2_click(object sender, EventArgs e) 109

// onceki kayıt baglan.open(); veri = new OleDbCommand("select top 1 nosu,adi,soyadi,sehir,tel from adres where nosu<'" + textbox1.text + "' order by nosu desc", baglan); d_oku(); private void button3_click(object sender, EventArgs e) // sonraki kayıt baglan.open(); veri = new OleDbCommand("select top 1 nosu,adi,soyadi,sehir,tel from adres where nosu>'" + textbox1.text + "' ", baglan); d_oku(); private void button5_click(object sender, EventArgs e) // son kayıt baglan.open(); veri = new OleDbCommand("select top 1 nosu,adi,soyadi,sehir,tel from adres order by nosu desc ", baglan); d_oku(); private void button4_click(object sender, EventArgs e) // arama baglan.open(); veri = new OleDbCommand("select nosu,adi,soyadi,sehir,tel from adres where nosu='" + textbox1.text + "'", baglan); d_oku(); private void button7_click(object sender, EventArgs e) // kayıt etme //veritabanına veri eklerken insert sql cümlesi yazıcaz. baglan.open();//öncelikle bağlantımızı açıyoruz. veri = new OleDbCommand("insert into adres values('" + textbox1.text + "', '" + textbox2.text + "', '" + textbox3.text + "','" + textbox4.text + "','" + textbox5.text + "')", baglan); veri.executenonquery(); temizleme(); baglan.close(); private void button8_click(object sender, EventArgs e) // degiştirme baglan.open(); veri = new OleDbCommand("update adres set nosu='" + textbox1.text + "',adi='" + textbox2.text + "',soyadi='" + textbox3.text + "',sehir='" + textbox4.text + "',tel='" + textbox5.text + "' where nosu='" + textbox1.text + "'", baglan); veri.executenonquery(); 110

temizleme(); MessageBox.Show(" Değiştirme yapıldı.."); baglan.close(); private void button6_click(object sender, EventArgs e) // kayıt silme DialogResult son; son = MessageBox.Show("kayıtı silmek istiyormusunuz...", "silme kontrolu", MessageBoxButtons.YesNo); if (son == DialogResult.Yes) baglan.open(); veri = new OleDbCommand("delete from adres where nosu='" + textbox1.text + "' ", baglan); veri.executenonquery(); temizleme(); MessageBox.Show(" Kayıt Silindi..."); baglan.close(); else MessageBox.Show("kayıt silinmedi..."); private void button9_click(object sender, EventArgs e) // Cıkıs Application.Exit(); Microsoft Sql işlemleri Sqlserver 2003,2005,2008 sürümleri vardır. SQL Server 2000 Evaluation Edition: 120 gün kısıtlı kullanıma sahip update edilemeyen (service pack yüklenemeyen) deneme amaçlı kullanılan sürümdür. SQL Server 2000 Developer Edition: Geliştirme amaçlı kullanılan üründür. Genelde yazılım geliştiriciler tarafından kullanılır. Diğer sürümlerde bulunan tüm özelliklere sahiptir. SQL Server 2000 Windows CE Edition: Pocet Pc lerde kullanılan Windows CE işletim sistemleri için geliştirilmiş sürümdür. SQL Server 2000 Desktop Engine (Personal Edition): Maximun 2GB data boyutunu destekleyen olap engine uygulamalarına ambarlık yapabilecek kapasitede olan aynı zamanda maximum workgroup kullanıcılarını destekleyen sürümdür. Server dışındaki bilgisayarlarada kurulabilir. Xp, Win98, WinMe gibi. 111

SQL Server 2000 Standart Edition: Windows NT-2000-2003 server family üzerine kurulan bilir. Teorik olarak 1,048,516 TB. Data boyutunu destekler. 2 GB memory 4 CPU desteği vardır. SQL Server 2000 Enterprise Edition: Hepsini kapsar.windows NT-2000-2003 server family üzerine kurulan bilir Teorik olarak 1,048,516 TB. Data boyutunu destekler. Cluster olarak krulabilir. 64 GB memory 32 CPU desteği vardır. Tabii ki bu destek işletim sistemi ile ilgilidir. SQL Server 2000 64-bit Edition: SQL Server 2000 serisinin en taze ürünüdür. Intel Itanium - tabanlı serverlar üzerinde 64 bit işletim sistemine sahip serverlarda gerçek performansına ulaşılır. SQLserver 2008 SQL Server 2008 Enterprise :SQL Server 2008 Enterprise, kurumsal çevrimiçi işlem ve veri ambarı uygulamalarının yüksek taleplerini karşılayan kapsamlı bir veri platformudur. SQL Server 2008 Standard:SQL Server 2008 Standard departman uygulamalarını çalıştırmak için sınıfının en iyisi kullanım ve yönetim kolaylığı sağlayan tam bir veri yönetimi ve kurumsal zeka platformudur. Özel Sürümler SQL Server 2008 Workgroup :Şubeleri, güvenli uzaktan eşitleme ve yönetim özellikleri sağlayan bu güvenilir veri yönetimi ve raporlama platformunda çalıştırılır. SQL Server 2008 Web :Yüksek kullanılabilir Internet tarafı web hizmeti ortamlarıyla yüksek düşük maliyetli, yüksek ölçekli, yüksek kullanılabilir web uygulamaları veya veri barındırma çözümleri sağlanır. SQL Server 2008 Developer: Sadece geliştirme, test ve gösterim amacıyla geliştirici başına lisans verilen düşük maliyetli SQL Server 2008 Enterprise sürümü. Ücretsiz Sürümler SQL Server 2008 Express :Ücretsiz olarak yükleyebileceğiniz SQL Server 2008 Express, masaüstü ve küçük sunucu uygulamalarını öğrenmek ve oluşturmak ve ISV'ler tarafından dağıtım için idealdir. SQL Server Compact 3.5 :Ücretsiz olarak yüklenebilen SQL Server Compact, geliştiricilerin SQL Server'ı doğrudan uygulamalarına dahil etmesini sağlar ve tüm Microsoft Windows 112

platformlarındaki mobil aygıtlar, masaüstü sistemleri ve web istemcileri için arada bir bağlanan ve bağımsız uygulamalar sağlar. Bulut Hizmetleri SQL Azure Veritabanı :Microsoft SQL Azure Veritabanı SQL Server teknolojilerini kullanan bulut tabanlı bir ilişkisel veritabanı hizmetidir. Microsoft tarafından buluttan barındırılan yüksek kullanılabilir, ölçeklendirilebilir, çok müşterili bir veritabanı hizmetidir. SQL Azure Veritabanı, çoklu veritabanlarının kolay bir şekilde sağlanmasına ve uygulanmasına olanak verir. Geliştiricilerin herhangi bir yazılımı kurması, ayarlaması, yama uygulaması veya yönetmesi gerekmez. Yüksek Kullanılabilirlik ve hata toleransı dahilidir ve herhangi bir fiziksel yönetim gerektirmez. SQL Azure Veritabanı Transact-SQL (T-SQL) destekler. Müşteriler T-SQL tabanlı benzer ilişkisel veri modeli ve mevcut programlama araçları hakkındaki bilgilerini kullanabilir. SQL Azure Veritabanı, iki sürüm sağlar: Web Edition ve Business Edition. Microsoft Sql Server 2005 ve Client Management kurulumu Microsoft SQL server2005 Express kurulumu SQLEXPR.EXE -- Install 113

114

115

Microsoft SQL Client Management Kurulumu SQLServer2005_SSMSEE.msi -----> Install 116

Eklenmiş olan Microsoft Sql2005 programları Microsoft SQL Server a Giriş SQL Server Management Studio Express ile girilir. 117

118

Microsoft SQL Database,table oluşturma Sql Server Management Studio Express programına, Windows Vista ve Windows7 de direk giriş yapılmaz. Eğer yapılırsa Database, table oluşturamayız, izin sorunu oluşur.sağ Mouse - yönetici modunda çalıştır olarak gireriz. SQL Server Management Studio Express ile girilir. Databases üzerinde sağ Mouse tıklayarak New Database seçilir. 119

Yeni oluşacak olan Database ismini uretim gibi veririz. Microsoft SQL de table oluşturma SQL Server Management Studio Express ile girilir. 120

Table oluşturma -Table oluşturmak istediğimiz Database in (Uretim gibi) altında bulunan Tables a tıklarız. Daha sonra sağ mouse ile New Table seçeriz. -nosu,adi, soyadi gibi değişken isimlerini tek tek yazarak table oluştururuz. - Primary key tanımı için nosu üzerinde sağ mouse tılayarak Set primary key seçeriz. - Tanımlı table dan cıkarken, table ismini adres olarak veririz. 121

Table Designına giriş (değişken tanımlarına) Data girişi. Sırasıyla Uretim, Tables ve adres tıklanır. adres üzerinde sağ mouse ile Open table seçilerek veriler girilir. Microsoft SQL Server Veri tabanı ve Table isimleri Veritabanı : Uretim Table : adres 122

Microsoft Sql ile kayıt işlemleri Access teki 1.yöntem,2.yöntem,3.yöntem ile aynısıdır.sadece table secimi farklıdır. Texbox larda gösterme ve önceki, sonraki kayıtlara gecme de ise table secimi ve kodlama farklıdır. Kodlamada persondataset yerine egitimdataset kullanıyoruz. Table secimi 1. Aşama : Access 1. Yöntem: Access 2. Yöntem: 123

Access 3. Yöntem : Texbox larda gösterme ve önceki, sonraki kayıtlara gecme : 124

Table secimi 2. Aşama : 125

Texbox larda gösterme ve önceki, sonraki kayıtlara gecmede kodlama access deki persondataset egitimdataset olarak değişir. private void Form1_Load(object sender, EventArgs e) // TODO: This line of code loads data into the 'egitimdataset.adres' table. You can move, or remove it, as needed. this.adrestableadapter.fill(this.egitimdataset.adres); textbox1.databindings.add("text", egitimdataset.adres, "nosu"); textbox2.databindings.add("text", egitimdataset.adres, "adi"); textbox3.databindings.add("text", egitimdataset.adres, "soyadi"); textbox4.databindings.add("text", egitimdataset.adres, "sehir"); textbox5.databindings.add("text", egitimdataset.adres, "tel"); private void button1_click(object sender, EventArgs e) // ilk kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[egitimDataSet.adres]; sonra.position = 0; private void button2_click(object sender, EventArgs e) //Önceki kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[egitimDataSet.adres]; if (sonra.position <= 0) MessageBox.Show("baska kayıt kalmadı.ilk kayıttasınız"); 126

else sonra.position -= 1; private void button3_click(object sender, EventArgs e) // Sonraki kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[egitimDataSet.adres]; if (sonra.position >= sonra.count - 1) MessageBox.Show("baska kayıt kalmadı.son kayıttasınız"); else sonra.position += 1; private void button4_click(object sender, EventArgs e) // En son kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[egitimDataSet.adres]; sonra.position = sonra.count - 1; private void button5_click(object sender, EventArgs e) // Kayıt Silme CurrencyManager sonra = (CurrencyManager)BindingContext[egitimDataSet.adres]; DialogResult son; son = MessageBox.Show("kayıtı silmek istiyormusunuz...", "silme kontrolu", MessageBoxButtons.YesNo); if (son == DialogResult.Yes) sonra.removeat(sonra.position); adrestableadapter.update(egitimdataset.adres); else MessageBox.Show("kayıt silinmedi..."); private void button6_click(object sender, EventArgs e) // database kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[egitimDataSet.adres]; sonra.endcurrentedit(); // dataset'e (ram) kayıt adrestableadapter.update(egitimdataset.adres); // database'e kayıt MessageBox.Show("Database kayıt yapıldı.."); private void button7_click(object sender, EventArgs e) // Arama int t = 0, b = 0; CurrencyManager sonra = (CurrencyManager)BindingContext[egitimDataSet.adres]; foreach (DataRow satir in egitimdataset.adres.rows) if (Convert.ToInt32(satir[0].ToString()) == Convert.ToInt32(textBox6.Text)) 127

sonra.position = t; b = 1; return; //for'dan cık t++; if (b == 0) MessageBox.Show("kayıt bulunamadı..."); private void button8_click(object sender, EventArgs e) // Kayıt giriş başlama CurrencyManager sonra = (CurrencyManager)BindingContext[egitimDataSet.adres]; sonra.addnew(); textbox1.focus(); private void button9_click(object sender, EventArgs e) Application.Exit(); private void Form1_FormClosed(object sender, FormClosedEventArgs e) // form cıkışta otomatik database'e kayıt CurrencyManager sonra = (CurrencyManager)BindingContext[egitimDataSet.adres]; sonra.endcurrentedit(); // dataset'e(ram) kayıt adrestableadapter.update(egitimdataset.adres); // database'e kayıt SQL cümleler ile Microsoft Sql erişimi Access ile Microsoft SQL arasında kod farklılıkları Access using System.Data.OleDb; OleDbConnection OleDbCommand OleDbDataReader Microsoft SQL using System.Data.SqlClient; SqlConnection SqlCommand sqldatareader Access : OleDbConnection baglan = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\\c#_calis\\person.accdb"); Microsoft Sql : SqlConnection baglan = new SqlConnection(@"Data Source=VMBILGISAYAR\SQLEXPRESS3;Initial Catalog=egitim;Integrated Security=True"); 128

Access veya M.sql de yukardaki kırmızı renkli bağlantı kodlarını Internet ten bulabiliriz veya Data - Add new data source a denemek için girerek, en sonunda oluşan connection String kodunu copy-paste ile alırız. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; // Microsoft SQL için eklendi namespace access_sql public partial class Form1 : Form public Form1() InitializeComponent(); // alttaki iki satır eklendi // catalog - database ismi(egitim), Data source - Çalışan Microsoft SQL ismi( VMBILGISAYAR\SQLEXPRESS3 ) SqlConnection baglan = new SqlConnection(@"Data Source=VMBILGISAYAR\SQLEXPRESS3;Initial Catalog=egitim;Integrated Security=True"); SqlCommand veri; // yazmada kullanıyoruz SqlDataReader oku; // okumada kullanıyoruz private void temizleme() 129

textbox1.text = null; textbox2.text = null; textbox3.text = null; textbox4.text = ""; textbox5.text = ""; textbox1.focus(); private void d_oku() oku = veri.executereader(); // oku.read(); sadece bu satırı kullanamayız.kayıt olmaz ise sorun verir.o yüzden while ile kullanırız. int kont = 0; while (oku.read()) kont = 1; textbox1.text = oku["nosu"].tostring(); textbox2.text = oku["adi"].tostring(); textbox3.text = oku["soyadi"].tostring(); textbox4.text = oku["sehir"].tostring(); textbox5.text = oku["tel"].tostring(); if (kont == 0) MessageBox.Show("kayıt yoktur..."); oku.close(); baglan.close(); private void Form1_Load(object sender, EventArgs e) private void button10_click(object sender, EventArgs e) // temizleme temizleme(); private void button1_click(object sender, EventArgs e) // ilk kayıt baglan.open(); veri = new SqlCommand("select top 1 nosu,adi,soyadi,sehir,tel from adres order by nosu asc ", baglan); d_oku(); private void button2_click(object sender, EventArgs e) // onceki kayıt baglan.open(); 130

veri = new SqlCommand("select top 1 nosu,adi,soyadi,sehir,tel from adres where nosu<'" + textbox1.text + "' order by nosu desc", baglan); d_oku(); private void button3_click(object sender, EventArgs e) // sonraki kayıt baglan.open(); veri = new SqlCommand("select top 1 nosu,adi,soyadi,sehir,tel from adres where nosu>'" + textbox1.text + "' ", baglan); d_oku(); private void button5_click(object sender, EventArgs e) // son kayıt baglan.open(); veri = new SqlCommand("select top 1 nosu,adi,soyadi,sehir,tel from adres order by nosu desc ", baglan); d_oku(); private void button4_click(object sender, EventArgs e) // arama baglan.open(); veri = new SqlCommand("select nosu,adi,soyadi,sehir,tel from adres where nosu='" + textbox1.text + "'", baglan); d_oku(); private void button7_click(object sender, EventArgs e) // kayıt etme //veritabanına veri eklerken insert sql cümlesi yazıcaz. baglan.open();//öncelikle bağlantımızı açıyoruz. veri = new SqlCommand("insert into adres values('" + textbox1.text + "', '" + textbox2.text + "', '" + textbox3.text + "','" + textbox4.text + "','" + textbox5.text + "')", baglan); veri.executenonquery(); temizleme(); baglan.close(); private void button8_click(object sender, EventArgs e) // degiştirme baglan.open(); veri = new SqlCommand("update adres set nosu='" + textbox1.text + "',adi='" + textbox2.text + "',soyadi='" + textbox3.text + "',sehir='" + textbox4.text + "',tel='" + textbox5.text + "' where nosu='" + textbox1.text + "'", baglan); veri.executenonquery(); temizleme(); MessageBox.Show(" Değiştirme yapıldı.."); baglan.close(); 131

private void button6_click(object sender, EventArgs e) // kayıt silme DialogResult son; son = MessageBox.Show("kayıtı silmek istiyormusunuz...", "silme kontrolu", MessageBoxButtons.YesNo); if (son == DialogResult.Yes) baglan.open(); veri = new SqlCommand("delete from adres where nosu='" + textbox1.text + "' ", baglan); veri.executenonquery(); temizleme(); MessageBox.Show(" Kayıt Silindi..."); baglan.close(); else MessageBox.Show("kayıt silinmedi..."); private void button9_click(object sender, EventArgs e) // Cıkıs Application.Exit(); 132

Console Đşlemleri 133

static void Main(string[] args) string isim,adres; Console.WriteLine("kayıt sistemi \n\n ismini giriniz..:"); isim=console.readline(); Console.WriteLine("adresini giriniz..:"); adres=console.readline(); Console.WriteLine("isminiz..:"+isim+"\n"+"adres..:"+adres+" cıkıs için Enter"); Console.ReadLine(); Uygulama : Sınıf gecme hesaplama static void Main(string[] args) Console.WriteLine("degerlendirme yapacakmısınız (E/H)"); string deger; deger=console.readline(); if(deger=="e") degerlendir(); private static void degerlendir() int vize1,vize2,final; double sonuc; Console.WriteLine("birinci vize notu..:"); vize1=convert.toint32(console.readline()); Console.WriteLine("ikinci vize notu..:"); vize2=convert.toint32(console.readline()); Console.WriteLine("final notu..:"); final=convert.toint32(console.readline()); sonuc=(vize1+vize2)*0.2+final*0.6; if(sonuc>=50) Console.WriteLine("sınıfı gectiniz.."); else Console.WriteLine("sınıfı gecemediniz.."); Console.WriteLine("not ortalaması..:"+sonuc.tostring()); Console.WriteLine("degerlendirme yapacakmısınız (E/H)"); string deger; deger=console.readline(); if(deger=="e") degerlendir(); 134

Uygulama : Access dosyadan kayıt okuma using System; using System.Data; // ekleme yapıldı using System.Data.OleDb; // ekleme yapıldı static void Main(string[] args) string baglanti = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\\c#_calis\\person.accdb"; DataSet ds_yeni = new DataSet(); OleDbConnection con_yeni = new OleDbConnection(baglanti); OleDbDataAdapter da_yeni = new OleDbDataAdapter("select * from adres", con_yeni); da_yeni.fill(ds_yeni, "adres"); Console.WriteLine(" tüm kayıtlar "); Console.WriteLine("--------------------------"); foreach (DataRow satir in ds_yeni.tables[0].rows) Console.WriteLine(satir[1].ToString() + " " + satir[2].tostring() + " " + satir[3].tostring()); Console.ReadLine(); 135

Raporlama ( Crystal Reports ) Access dan rapor oluşturma 1.Yöntem: Direk rapor oluşturma 136

137

Crystalreport1.rpt şeklinde Rapor oluşur. Main report olarak kod kısmını, Main Report Previev olarak çalışmış halini görebiliriz. Project -- add new item - Window form ile form2 ekleriz. Form2 ye bir buton ekleriz ve ismini rapor şeklinde değiştiririz. 138

Rapor butona cift tıklayarak aşagıdaki kodu yazarız. Form1 yeni = new Form1(); yeni.show(); 139

İlk form Form1 yaratıldıgı için onu değiştirmeliyiz. Yani başlangıc formunu Form2 yaparız.program.cs ye tıklayarak form1 i form2 yaparız. Şimdi F5 veya Debug - start debugging veya çalıştırma iconuna tıklayarak çalıştırırız. 140

2.Yöntem: Form üzerinde sonradan rapor oluşturma C# a girilerek form1 oluşturulur. Sonradan Crystal report eklemek ( toolbox a icon olarak gözükmesi için ) için.net framework4 clint profile ın.net framework4 olarak değiştirilmesi gerekir. 141

Form2 oluşturulur. Crystal report oluşturulur. 142

143

Crystalreport1.rpt şeklinde Rapor oluşur. Main report olarak kod kısmını, Main Report Previev olarak çalışmış halini görebiliriz. Form2 ye tıklar. Toolbox tan Crystal report iconu, çift tıklayarak veya sürükleyerek form2 üzerinde rapor oluştururuz. 144

Form2 üzerinde crystal report secilerek özelliklerden report source a crystalreport1 secilir. Form1 seceriz( Eğer form1 gizli ise Solution explorer dan form1.cs tıklayarak form1 sayfasını getiririz ).Form1 üzerinde bir buton oluştururuz ve button un ismini rapor olarak değiştiririz. Butona cift tıklayarak kodlama yaparız. 145

Form2 yeni = new Form2(); yeni.show(); 146

F5 veya Debug - start debugging veya çalıştırma iconuna çalıştırırız. tıklayarak 147

Microsoft SQL den rapor oluşturma Access den rapor oluşturma yöntemi ile aynıdır.sadece Erişim olarak sql server kullanırız. 148

Şartlı Raporlar Access den belirli kayıt raporu oluşturma C# a girilerek form1 oluşturulur. Sonradan Crystal report eklemek ( toolbox a icon olarak gözükmesi için ) için.net framework4 clint profile ın.net framework4 olarak değiştirilmesi gerekir. 149

Form2 oluşturulur. Crystal report oluşturulur. 150

Hatırlatma : select * from adres where nosu ="?ykod" - noyu 100 veya,200 gibi tam gireriz. select * from adres where nosu like "?ykod" - noyu 100 veya 1% veya 10% girebiliriz. 1 ile veya 10 ile başlayanları listeler. select * from adres where nosu like "?ykod"&"%" -- 100, 1, 10 verebiliriz. 100 veya 1 veya 10 ile başlayanları listeler. Boş girersek hepsini listeler. 151

152

Crystalreport1.rpt şeklinde Rapor oluşur. Main report olarak kod kısmını, Main Report Previev olarak çalışmış halini görebiliriz. Form2 ye tıklar. Toolbox tan Crystal report iconu, çift tıklayarak veya sürükleyerek form2 üzerinde rapor oluştururuz. 153

Form2 üzerinde crystal report secilerek özelliklerden report source a crystalreport1 secilir. Form1 seceriz( Eğer form1 gizli ise Solution explorer dan form1.cs tıklayarak form1 sayfasını getiririz ).Form1 üzerinde bir TextBox ve bir buton oluştururuz ve button un ismini rapor olarak değiştiririz. Butona cift tıklayarak kodlama yaparız. 154

public static string kodx; Form2 yeni=new Form2(); kodx=textbox1.text; yeni.show(); 155

Form2 sayfasını secer, çift tıklar ve aşagıdaki kodlamayı yaparız. CrystalReport1 rapor = new CrystalReport1(); CrystalDecisions.Shared.ParameterValues parametre = new CrystalDecisions.Shared.ParameterValues(); CrystalDecisions.Shared.ParameterDiscreteValue deger = new CrystalDecisions.Shared.ParameterDiscreteValue(); deger.value = Form1.kodx; parametre.add(deger); rapor.datadefinition.parameterfields["ykod"].applycurrentvalues(parametre); crystalreportviewer1.reportsource = rapor; F5 veya Debug - start debugging veya çalıştırma iconuna çalıştırırız. tıklayarak 156

Microsoft SQL den belirli kayıt raporu oluşturma Access den rapor oluşturma yöntemi ile aynıdır.sadece Erişim olarak sql server kullanırız. 1.yöntem : Komut satırı ile 157

Hatırlatma : Access de cift tırnak ( ), sql de tek tırnak ( ) kullanıyoruz.access ve Sql de aşagıdaki satırları kopya ile kullanmayalım.kullanırsakta cift veya tek tırnagı orada mutlaka yeniden yazalım. select * from adres where nosu =?ykod - noyu 100 veya,200 gibi tam gireriz. select * from adres where nosu like?ykod - noyu 100% veya 1% veya 10% girebiliriz. 100 ile 1 ile veya 10 ile başlayanları listele.sadece 100 yazamayız. select * from adres where nosu like?ykod% -- 100, 1, 10 verebiliriz. 100 veya 1 veya 10 ile başlayanları listele. Boş girersek hepsini listeler. 158

2.yöntem : Store procedure kullanımı ile Microsoft Sql Server da sec isminde bir store procedure oluştururuz. CREATE PROCEDURE sec @ykod varchar(25) as select * from adres where nosu=@ykod GO Hatırlatma: where nosu=@ykod -- 100,200,300 gibi tam no listelenir. where nosu like @ykod - 100%,1% girilmelidir.100 ile,1 ile başlayanlar listelenir. where nosu like @ykod+'%' - boş girilirse hepsi, 1girilirse, 1 ile başlayanlar,100 girilirse 100 ile başlayanlar. Microsoft SQL Server a girilir. Sql Server Management Studio Express programına, Windows Vista ve Windows7 de direk giriş yapılmaz. Eğer yapılırsa Database, table oluşturamayız, izin sorunu oluşur.sağ Mouse - yönetici modunda çalıştır olarak gireriz. 159

Yazdıgımız procedure önce sağ Mouse -- Save sec.sql gibi saklarız. Sonra çalıştırırız (execute ) yani sec procedure oluşturmuş oluruz. Sakladıgımız procedure sql dosyasını daha sonra istersek kullanabiliriz. O dosyayı görme. Procedure oluşturma 160

Oluşan procedure dosyasını görme. Programa bir kez girip cıktıktan sonra veya refresh ederek görebiliriz. Access den rapor oluşturma yöntemi ile aynıdır.sadece Erişim olarak sql server kullanırız. 161

Form2 kod sayfasında [ @ykod ] olarak kullanırız. 162

CrystalReport1 rapor = new CrystalReport1(); CrystalDecisions.Shared.ParameterValues parametre = new CrystalDecisions.Shared.ParameterValues(); CrystalDecisions.Shared.ParameterDiscreteValue deger = new CrystalDecisions.Shared.ParameterDiscreteValue(); deger.value = Form1.kodx; parametre.add(deger); rapor.datadefinition.parameterfields["@ykod"].applycurrentvalues(parametre); crystalreportviewer1.reportsource = rapor; 163

Cift şartlı kullanma Table erişimi yapılırken - select * from adres where nosu=?ykod and adi=?yadi -- access select * from adres where nosu=?ykod and adi=?yadi -- Microsoft SQL Not: yukardaki kodlar copy ile programa alınırsa cift veya tek tırnak yeniden yazılmalıdır.uyumsuzluk gösteriyor. Form değişiklik -- iki textbox eklenir.nosu ve adı için 164

Form2 de kod değişiklik --- CrystalReport1 rapor = new CrystalReport1(); CrystalDecisions.Shared.ParameterValues parametre = new CrystalDecisions.Shared.ParameterValues(); CrystalDecisions.Shared.ParameterDiscreteValue deger = new CrystalDecisions.Shared.ParameterDiscreteValue(); deger.value = Form1.kodx; parametre.add(deger); rapor.datadefinition.parameterfields["ykod"].applycurrentvalues(parametre); deger.value = Form1.adx; parametre.add(deger); rapor.datadefinition.parameterfields["yadi"].applycurrentvalues(parametre); crystalreportviewer1.reportsource = rapor; Form1 botton kodda degişiklik - public static string kodx; public static string adx; Form2 yeni=new Form2(); kodx=textbox1.text; adx=textbox2.text; yeni.show(); 165

Raporda işlem yapma Başlık verme Toolbox tan TextObject iconu sürkleyerek sayfa üst bilgisine bırakılır. Sağa sola taşırız. Properties ten rengini ve fontunu veya üst cubuktan değiştirebiliriz. 166

String deger olan gun_say ve gun_ucret i integer a cevirme 1) Field Explorer tıklanır. 2) Formula Fields - sağ Mouse - New secilerek ucret ismi verilir. 167

3) tonumber formulu yazılarak kaydet ile saklanır.ucret değişkenimiz olmuş oldu.rapor alanlarında ucret degişkenini rapor icerisine sürükleyerek veya cift tıklayarak getirebiliriz. 4) aynı yöntem ile string deger olan gun_say değişkenini integer haline say isminde getiririz. 168

5) ucret ve say ile carpım yapılarak brut değişkeni oluştururuz. 6) brut değişkeni sayfa içerine sürüklenir.acıklama olarak üste brut yazısı cıkar.istersek Text Object sürükleyerek de brut acıklaması yazdırabiliriz.textobject sürükleyerek bir alan oluşturuz ve icerisine brut yazarız. 169

7) En alta brut degerlerini tbrut alanına toplatalım. 8) tbrut degerini sayfa icerisine sürükleyelim. 9) F5 ile raporu çalıştırırız. 170