TabControl

TabControl nedir?

tab_control_visual_studio_2012

Birden fazla farklı forma aktarmak yerine tek bir formda TabControl kullanarak formamıza sekmeler ekleyebiliriz.Bu nedenle bir hayli kullanışlıdır. En temel uzunluğu nesne uzunluğu, sekmenin boyutlarını ayarlama özellikleridir. Sekmeler çeşitli diğer elemanlar ile eşleşebilir ve üzerinde işlem yapabilir. Bu tanım için pratikte öoğunlukla ayarlar veya gelişmiş bölümlerinde rastgeldiğimiz kısımlara örnek gösterebiliriz.
tab_control_visual_studio_2012_form_gorunum

TabControl önemli özellikleri

  • SelectedTrap: Seçili olan sekme (tab).
  • SelectedIndex: Seçili olan index değeri.
  • Tabcount: Sekme sayısı.
  • Tabpage: Sekme sayfaları

Tab pages özelliği
tab_control_tab_pages_ozelligi

Kod ile sekme eklemek
tabControl1.TabPages.Add(“Tab Adı”);
Kod ile sekme silmek
tabControl1.TabPages.Remove(“Tab Adı”);

PictureBox (Resim kutusu) Kontrolü

PictureBox (Resim Kutusu) nedir?

picture_box_visual_studio_gosterim

PictureBox formlarımıza resim eklememiz için kullanabileceğimiz bir başka kontrol elemanıdır. En önemli özelliği resmin görüntülenme biçimi ve çözünürlüklüğünü belirleyeceğimiz özelliktir. PictureBox resmi görüntülerken resmin kullanıcı tarafından alınabilmesi için openFileDialog kullanılır.
open_file_dialog_visual_studio_2012

PictureBox Özellikleri

  • Autosize: Resmin büyüklüğüne göre otomatik olarak boyutlandırır. PictureBox’ın büyüklüğü resmin büyüklüğüne göre ayarlanır.
  • CenterImage:Resmin kontrolün tam ortasına yerleşir.
  • Normal: Yerleşebildiği kadar yerleşir ve geri kalanı gösterilmez.
  • StretchImage:Bizim belirlediğimiz PictureBox büyüklüğüne göre resmi sığdırır.

OpenFileDialog
Herhangi bir programda çalışırken “Dosya Aç” dediğimizde karşımızag elen pencere özelliği, kontrol elemanıdır. Vİsual Studio bu özelliği çeşitli özellikleriyle openFileDialog şeklinde bize yöneltir. Windows’un kullandığı ortak dosya yükleme işlemlerini gerçekleştirerek bu dosya açma özelliğini gösterilmesini sağlar.

  • openfiledialog.Title :Visual Studio’da dosya açma penceresinin ismini beilrlememizi sağlar.
  • openFileDialog.Filter : Filter özelliği filtreleme seçeneğidir. Burada diyalogumuz içerisinde hangi tür dosyaları alacağımızı, resimlerimizin çözünürlük boyutlarını ve diğer filtreleme kurallarını ayarlayabileceğimiz openFileDialog özelliğidir.
  • openFileDialog.FilterIndex : Varsayılan resim biçimin belirlediğimiz (eğer filtreleme yapıyorsak) özelliktir. Burada index değeri 1’dir.
  • openFileDialog.InitialDirectory : Varsayılan değeri belgelerim olan diyalog penceresi şeklidir. Eğer ki diyalogumuzu belirli bir dizinin içerisinde belirtmek istiyorsak bu özelliği kullanabiliriz. Dosya aç dediğimizdeyse direkt olarak belgelerimiz penceresine çıkacaktır.
  • openFileDialog.Multiselect: Aynı anda birden fazla dosya seçilebilmesini sağlayan özelliktir. Normalda bir dosya içerisinde tek bir dosya seçebiliriz yalnız burada bu özellik sayesinde bir seferde aynı birden fazla dosyayı seçebiliyoruz.
  • openFileDialog.Filenames OpenFileDialog’un en önemli özelliklerden bir tanesidir. Bu özellik ile seçilen dosyanın tutulduğu dosya adreslerini alabiliriz. Dolayısyıla Filenames özelliğini kullanarak istediğimiz işlemi gerçekleştirebiliriz. PictureBox içerisine buradan aldığımız değeri aktarıp direkt resmi gösterebiliriz.

ÖRNEKLER

Örnek 1:
Örnek: Bir adet buton -> dosya aç
Dosya yolu -> textbox
Bir adet Picturebox
Alta yüklenen resim adında bir label.

Yapacağımız işlem şu: Dosya aç dediğimiz direkt olarak resimler seçili, dosyanın yolunu gösteriyor ve direkt olarak dosyayı Picture boxa yüklüyor.

dosya_ac_openfiledialog_picturebox_ornek


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 WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{ string baslik;
openFileDialog1.ShowDialog();
openFileDialog1.Title = "Dosya aç";
textBox1.Text = openFileDialog1.FileName;
pictureBox1.Image = Image.FromFile(textBox1.Text);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
}
}

Örnek 2:
İlave olarak forma combox’ı ekleyeceğiz. Combox’da 4 tane değer olacak

1. Otomatik boyutlanıdır
2. Resmi ortala
3. Normal görüntüle
4. Resmi sığdır

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.Items.Add("Otomatik boyutlandır");
comboBox1.Items.Add("Resmi Ortala");
comboBox1.Items.Add("Normal görüntele");
comboBox1.Items.Add("Resmi sığdır");
}

private void button1_Click(object sender, EventArgs e)
{ string baslik;
openFileDialog1.ShowDialog();
openFileDialog1.Title = "Dosya aç";
textBox1.Text = openFileDialog1.FileName;
pictureBox1.Image = Image.FromFile(textBox1.Text);
}

private void pictureBox1_Click(object sender, EventArgs e)
{

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{ switch(comboBox1.SelectedIndex)
{
case 0: pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; break;
case 1: pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage; break;
case 2: pictureBox1.SizeMode = PictureBoxSizeMode.Normal; break;
case 3: pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; break;
}
}
}
}

NumericUpdown nedir?

NumericUpdown nedir?

NumericUpDown sayısal artırma ve denetimi için kullanılan C# kontrolüdür.
numericupdown_nedir_visualstudio_c_sharp


Herhangi bir sayı denetimi için yukarı veya aşağı okla artırım/azaltım için kullanacığımız kontrolde decimal gösterim tipi bulunur. Decimal sayılar üzerinde işlem gerçekleştirilir. Eğer sayının 16 bitlik sayı tipinde gösterilmesini istoyrsak hexadecimal tipinde kullanmamız gerekir. Numericupdown’da yukarı veya aşağı bastığımız zaman birer birer artar tabi bunu biz özelleştirerek aralık sayısını belirtebilliriz. Daha yüksek aralıklarda bulunabildiğimiz gibi aralığı daha düşükde seçebiliriz. Standart bir NumericUpdown başlangıç değeri 0, maksimum değeri 100’dür.

Önemli özelliklerinden biri value yani değerleridir. Biz değerleri kendimiz belirleyip yalnızca bu değerleri kullanıcıya okutabiliriz. Bu işlem Read Only adı denirken işlem sırasında kullanıcı ile etkileşimin kapalı olamsı gerekir. Diğer önemli özelliklerinden bir tanesi ise value changed olayıdır. Sayı artırımı veya azaltımı yapıldığı zaman gerçekleşecek olayları bu olay içerisinde belirtiriz. Bu olayın içerisine girmemiz için NumericUpDown kontorlüne form üzerinde çift tıklamamız gerekir.

Örnek:
numericupdown_ornek_1_gosterim


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 WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
decimal deger,yuzde,sonuc;
deger = Convert.ToDecimal(textBox1.Text);
yuzde = deger*(numericUpDown1.Value)/100;
textBox2.Text = yuzde.ToString();
}
}
}

Buna ilave olarak varsayılan minimum değeri yine 0 olsun maximum değeri 500 olsun.


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 WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
numericUpDown1.Increment = 5;
numericUpDown1.Maximum = 500;
}

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
decimal deger,yuzde;
deger = Convert.ToDecimal(textBox1.Text);
yuzde = deger*(numericUpDown1.Value)/200;
textBox2.Text = yuzde.ToString();
}
}
}

Checkbox ve Radiobutton kontrolü

Checkbox ve Radiobutton kontrolü

radio_button_vs_gorunum

check_box_vs_gorunum

  • Checkbox: Aynı anda birden fazla değer atayabilmemizi sağlayan özelliktir.
  • Radiobutton:Bu kontrolde aslında yapı olarak checkboxa benzer. Checkboxtan farkıysa birden fazla değilde yalnızca bir tane seçmemizi sağlar. Bu buttonun en büyük işlevsel tarafı seçilebilir olmasıdır. Örneğin: Web uygulamalarında test etmemiz gerektiğinde bu özelliği kullanırız.
  • Groupbox:Checkbox veya radiobutton gibi nesneleri gruplandırmak için kullanabileceğimiz bir nesnedir.
  • Visible: Görünebilirlik anlamına gelir. Visible kontrolün form üzerinde görünüp / görünemeyeceği anlamına gelir.

    True -> görünebilir (varsayılan)

    False -> görünmez.

Örnek 1:

• 2 adet radiobutton
o Birincisinin text özelliğine -> evli
o İkincisinin text özelliğine ->bekar
• Bir tane button ekliyoruz.
• Seçilince -> hangi durum seçiliysa o durumu götdin ve messagebox ile medeni durumunuzu yazdırsın

Örnek 2:
• Bir tane groupbox
• 3 tane checkbox ekliyoruz
• Yapmanızı istenilen şey hobilerden hangileri seçiliyseş kaç tenizisi seçiliyse hepsini ekrana yazdır.
hobileriniz_varmi._checbkbox radibutton ornek.,png

kaynak kodlar:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;

namespace WindowsFormsApplication4
{
publicpartialclassForm1 : Form
{
public Form1()
{
InitializeComponent();
}

privatevoid checkBox1_CheckedChanged(objectsender, EventArgs e)
{
if (checkBox1.Checked)
Hobileriniz.Visible = true;
elseHobileriniz.Visible = false;

}

privatevoid button1_Click(objectsender, EventArgs e)
{
string hobi = "";
if(checkBox2.Checked) hobi +=checkBox2.Text;
if(checkBox3.Checked) hobi +=checkBox3.Text;
if(checkBox4.Checked) hobi +=checkBox4.Text;
MessageBox.Show("Hobileriniz:"+hobi);
}
}
}

Listbox kontrolü

listbox_kontrolu

Combobox ile listboxun gerek olayları gerekse methodları aynıdır. Bunlar arasındaki fark birinin liste kutusu olup diğerinin seçim kutusu olmasıdır. Yani birine birinde (Listbox) birden çok seçim yapabilirken diğerinde(ComboBox) tek bir seçim yapma hakkımız bulunur. Bunun haricinde methodlar ve olaylar %99 oranında benzerdir. Listboxda da tıpkı Combobox da olduğu gibi Item Collection açılan kutumuzda görüntülemek istediğimiz değerleri belirtiyoruz.

Listbox nasıl oluşturulur?

listbox_nasil_olusturullur

Listboxa itemler nasıl eklenir?

listboxa_item_ekleme
Her satıra bir adet madde eklenecek şekilde itemler eklenir.
C_sharp_programlama_hesap_makinesi_yapimi

Listboxda temel özellikler

  • Selection mode:Seçim modudur. None, One,MultiSimple ve MultiExtended modları bulunur.
    Bu modlar arasından none seçmeyi kapatır, one tek bir seçim hakkı tanır, multisimple çoklu seçim hakkı tanırken Extended moduysa shift tuşuna basılarak seçim yapma hakkı tanır.
  • Sorted:Sıralama kriteridir. İki değeri bulunur; True ve False. True değerine sahipse ise sıralamayı otomatik olarak yapar.
  • Items:Listboxın maddelerini eklediğimiz yerdir.
  • SelectedItem:Seçili maddeyi verir. Listbox1.SelectedItem şeklinde kullanılır.
  • SelectedIndex:Seçilen maddenin index sırasını verir. Listboxdaki en üst değer 0’dan başlayarak kendisine bir id atanır. Maddelerimiz Adana, Adıyaman ve Afyon ise Adana 0, Adıyaman 1, Afyon 2 numaralı indexe sahip olur. Biz Afyon’u seçtiğimizde program bize 2 numaralı indexi idsini verecektir. Listbox1.SelectedIndex şeklinde kullanılır.
  • Item.Add():Madde eklemenin kod üzerindeki halidir. Item.Add(“Adana”,”Adıyaman”,”Afyon”) şeklinde kullanılır.

Listboxın önemli olayları

  • SelectedIndexChanged:Listboxun üzerine tılanınca gelen standart olaydır. Index değiştiğinde programın ne yapacağına buradan belirtiriz.
  • DoubleClick:Listboxa çift tıklanınca yapılacak olayı belirtiriz.

Örnek bir uygulama:

Textboxun üzerine bir değer girip ekle diyince soldaki değere ekliyoruz ve herhangi bir listboxdaki seçili nesneyi tutup seç dediğimizde sil dediğimizde silecektir.
1. Seçili değerin değiştirilmesi olay:
2. Ekle buttonuna tıklayınca değişim
3. Sil buttonuna
Listbox’a çift tıklayalım.
Amacımız listboxdaki seçili olan nesnemizi label üzerinde göstermek.
Aşağıdaki görünümü elde edelim.
c_Sharp_ornek_uygulama_listbox

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
string sehir;
sehir = txtsehir.Text.ToString();
lsbsehir.Items.Add(sehir);
lsbsehir.Refresh();
txtsehir.Text = "";
}

private void lsbsehir_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
lblsehir.Text = lsbsehir.SelectedItem.ToString();
}
catch { }
}

private void btnsil_Click(object sender, EventArgs e)
{
lsbsehir.Items.Remove(lsbsehir.SelectedItem.ToString());
lsbsehir.Refresh();
lsbsehir.Text = "";
lsbsehir.SelectedIndex = -1;
}
}
}

C# da Tür Dönüşümleri

Herhangi bir işlem yaptığımız zaman kullanıcılardan çeşitli bilgiler alırız. Bu bilgilerin çeşitliliği nedeniyle veri türleri bulunur. Veri türlerinin oluşturulmasında bellekte bu değişken için oluşturulacak byte cinsinden oluşturulan alanlar nedenlidir.

ToString

Biz ekrandan bir şey alacağımız zaman ne olursa olsun string tipinde alırız. Erkanda yazdığımız metinlerde yine string tipindedir. Örneğin bir textbox içerisinden aldığımız tip string yani karakter zinciri (katar) şeklindedir. Eğer biz bir kelimeyi işleme sokup ekrana yazdıracaksak ve bu işlem sayısal bir işlemse tür dönüşümü yapıp (hangi sayısal veri tipiyle işlem yapılacaksa) daha sonra ekrana yazmak için tekrar string tipine çevirip ekrana yazarız.

Convert.ToInt16 : Bellekte 2 byte

Convert.ToInt32 : Bellekte 4 byte

Diğer programlama dillerinde olduğu gibi Long, uzun unsigned ise işaretsiz anlamına gelir.

Dönüşüm işlemi:
Bir başka dönüşüm yöntemiyse parse yöntemidir. Değişkenin tipi dönüştürülecek veri parantez (fonksiyon içerisine) yazılır.

Sayi1 = int.Parse(“TextBox1.Text”)
Char1 = string.Parse(“Sayi1”)

C# da Try Catch komutu

Try Catch Komutu nedir?

Try Catch komutu bir hata ayıklama sistemidir. Diyelim ki programımız içerisinde bir hata ile sürekli olarak karşılıyoruz. Aynı zamanda hatanın ne olduğunu biliyorsak kullanıcıya hatayı oluşturan etkene yapmamasını dile getirebiliriz veya programımız verdiği hataya göre bizim belirlediğimzi kodları çalıştırıp programımızın hata vermesi yerine programımı devam ettirebiliriz Ayrıca Try Catch komutları çoğunlukla güvenlik amaçlı kullanırlırlar. Sistem içerisinde oluşan hatayı kötü amaçlı kişilere göstermemek amaçlıdır.

Catch blogunun standart (parametresiz) hali:


Try {
Hata olmadığında çalışacak kodlar
}
Catch {
Hata olduğunda çalışacak kodlar
}

Sistemin ürettiği hataları gizleme

Catch bloguna istersen parametrede atayabiliriz. Bunun için hata biçimlerini bilmemiz gerekir. Sistemin ürettiği hataların tümü Windows.System.Exception tanımlıdır. Bu sınıfı parametre olarak kullanıp bu tür hatalar ile karşılaştığımızda vereceğimiz tepkiyi belirleyebiliriz.


try
{

}
catch(Exception)
{

}

En çok yapılan hatalar:

  • Format exception sayısal bir veir türüne ait değişkenin bir harf veya veri aktarılması.
  • Overflow Exception: Atanan veya girilen sayı değişkenin tanımladığı tür değerinden daha fazla değer
  • ArgumentNullException: Sayısal bir değişken türüne boş bir değer atınac gösterilir.

Format Exception Try Catch kullanımı:

//Hata bloklarını özelleşitrme
Try {
Data olmadığında çalışacak kodlar
}
Catch(FormatException hata) {
MessageBox(“Hata:”+hatamesajı);
}

Bit hata ile birden çok catch blogu çalıştırabiliriz. Yani hataları özelleştirebiliriz. Bunu da bir çok hatanın olduğu durumlarda kullanırız. Örneğin hesap makinemizde değerlerimize birinci değeri tamsayı yerine string yani harf girişi yaptık, ikincisinde de bölme işlemini 0’a böldüğümüzü düşünelim. Bu durumda hata olduğunda yani birden fazla hatanın meydana geldiğinde program ilk catch blogunu çalıştırır. Bu sayede programda hata olsada olmasada program çalıştırılabilir. Hatalar sonucunda çalışmasını istediğimiz kodları Finally blogu ile gerçekleştiriyoruz.


Try {
Normal kodlar
}
Catch()
{}
Catch {}
Finally { }


Not:Program normalde tryden itibaren çalışmaısnı devam eder. Herhangi bir hata yakalırsa hata ile ilgili catch bloğuna gider. Eğer programda hata yoksa catch bloklarını işlemez.

Hesap makinesi konusundan kaynak kodlarını alarak devam edelim. Program içerisinde iki tane tamsayı değeri var. Combobox dan işlem seçimi yapıp, hesapla buttonuna tıklandığıdna label3’de bize sonuç gösterilecek. Hesap makinesi kodlarını try catch komutu içerisine alacağız. Yalnız değişken tanımlamanını program çalışma zamanında hatavermesi sorunu


try
{
// hesap makinesi kodları buraya gelecek
}
Catch(Exception hata)
{MessageBox.Show(“Hata oluştu”+hata.Message);}
// Eğer ki farklı hatalar bizim için önemleyse o zaman her hata için ayrı bir hata bloğu tanımlamalıyız.
Catch (FormatException hata1)
{
MessageBox.Show(“Hata:”+hata1.Message);
}
Catch (OverflowException hata2)
{
MessageBox.Show(“Hata:”+hata2.Message);
}
//Hataları özelleştirmek için System.Exception düzenlemesi kalıyor. Burayıda düzenledikten sonra belirlediğimiz //hata değişkenlerini özelleştirebilyioruz. Son olarak Fİnally bloğundan bahsdelim.
Finally
{
MessageBox.Show(“İşlem bitti.”);
}
/* Finally:
Hata olsada olmasada porogramın sonunda kesinlikle çalışacak koddur. Örneğin hesap makinemize klavyeden string girdik. BU hatayı programımızda belirttiğimiz gibi hata1 değişkenini gösterecektir. Daha sonra ise işlem bitti yazıp programımızı sonlanacaktır. */

C#’da hesap makinesi yapımı

C#’da hesap makinesi:

C#’da hesap makinesi yapmak başlangıç aşamasında button ve Textbox konttrollerini görmek ve yönlendirmek amacıyla yapılmaktadır. Hesap makinesindeki amaç metin kutularından alınan sayıların, kullanıcının verdiği emre göre belirli bir yere yazdırılmasıdır.

Adım adım C# da hesap makinesi yapımını öğrenelim. C# Editörümüzü açalım ve projemizi başlatalım.

C_sharp_programlama_hesap_makinesi_yapimi

Öncelikle bize gerekli kontrol elemanlarını tasarım aşamasında belirlememiz gerekecek. Bu program için kullanacığımız kontrol elemanları;

  • 2 adet textbox (Sayı1, Sayı2)
  • 1 adet combobox (İşlem seçimi: )
  • 1 adet button (Hesapla)
  • 3 adet label(Sayı1,sayı2,Sonuç: )

Kontrol nesnelerini aşağıdaki görünüme benzer bir şekilde dizelim.

C_sharp_programlama_hesap_makinesi_yapimi

Text özelliklerine değiştirelim.

C_sharp_programlama_hesap_makinesi_yapimi

C_sharp_programlama_hesap_makinesi_yapimi

Dizayn değişikliklerine devam edelim.

C_sharp_programlama_hesap_makinesi_yapimi

C_sharp_programlama_hesap_makinesi_yapimi

Kod yazımına başlamadan önce Combobox nesnemize maddelerimizi ekleyelim.

C_sharp_programlama_hesap_makinesi_yapimi

Tasarım aşamasını bitirdiğimize göre artık kodlamaya geçebiliriz. Kodlam aşamasına buttonun üzerine çift tıklayarak geçiyoruz. Böylece buttonun üzerine çift tıklanınca gerçekleşecek kodları yazmış olacağız.


int s1, s2; // sayı1 ve sayı2 dedik.
s1 = Convert.ToInt32(textBox1.Text); // Textboxdan alınan değerler string tipinde alındığından int tipine çeviriyoruz
s2 = Convert.ToInt32(textBox2.Text); // Aynı işlemi Textbox2 metin kutusu için de yaptık
/* Geldik işlemin hangisi olduğuna bunu iki yöntemde yapabiliriz
İlk yöntem Combobox'ın hangi metin değerine sahip olduğu
İkinci yöntem ise hangi index değerine yani hangi sıradaki seçimin seçildiği biz
henüz başlangıç aşamasında olduğumuz için ilki bizim için daha kolay olacaktır bu yüzden ilkini deneyelim
fakat benim size tavsiyem ikinci yöntemlede yapmaya çalışmanız (en aşağıad yine yorum satırları içerisinde paylaşıcam )
*/
if(comboBox1.Text=="Toplama") label1.Text="Sonuç: " + (s1+s2);
else if(comboBox1.Text=="Çıkarma") label1.Text="Sonuç: " + (s1-s2);
else if(comboBox1.Text=="Çarpma") label1.Text="Sonuç: " + (s1*s2);
else label1.Text="Sonuç: " + (s1/s2);

/*
* İkinci yöntem
* if (comboBox1.SelectedIndex == 0) label1.Text="Sonuç: " + (s1+s2);
* else if(comBox1.SelectedIndex == 1) label1.Text="Sonuç: " + (s1-s2);
* else if(comboBox1.SelectedIndex == 2) label1.Text="Sonuç: " + (s1*s2);
* else label1.Text="Sonuç: " + (s1/s2);
*/

C# Form Uygulamaları

C# Form Uygulamaları (Nesne Tabanlı Programlamanın Görsel Kısmı)

Windows tabanlı uygulamaların temelidne formlar vardır. Yani bunu biraz daha kaba tutarsak Formlara pencereler diyebiliriz. Her bir kontrol metodunun bir olayı ve özelliği bulunur. Bu özellikler içerisinde yapı kontrolünün görünümü, yerleşimi, olay kontrol ve değerlerinden bahsetmekdeyiz. Nesneye ait properties(özellikler) panelinden istersek kod yamza aşamasında nesneye ait özellikleri de değiştirebiliyoruz. Normal bu tarz biçimsel ve benzer uygulamaları gerçekleştirmek görsel olmadan kodla mevcuttur.

Buttona ait özellikler penceresi:

gorsel_programlama_c_sharp_giris

Checkboxa ait özellikler penceresi:

gorsel_programlama_c_sharp_giris_checkbox_propertios

Bir çok nesnenin özellikleri birbiri ile benzelrik gösterebilir yalnız her nesnenin kendine ait özelllikleri bulunur. Bu görsel kısım değil yalnızca kod kısmında da benzerlik gösterilebilir. Örneğin label yani etiketin text değerini almak için Label1.Text diyebileceğimiz gibi Textbox için de Textbox1.Text diyebiliriz.

C# Form Uygulamaları nasıl çalışır?

Görsel programlama yani C# form uygulamalarında .NET platformu sayesinde çalışırlar. Görsel programlara ait her bir nesne .NET platformu içerisinde tanımlanmıştır. Bu nedenle programcı yeni bir nesne türetmek yerine hazır sınıfları kullanarak yazılım geliştirir. Bundan önce C# Console Application (Konsol uygulamaları) yazdık. Bu uygulamalar içerisinde method tanımlamayı da görmüştük. Bu C# Konsol uygulamalar ile görsel programlama karşılaştırıldığnda görsel programlamanın programlamanın sıkıntı düşürmediği yalnızca araç kutusu (toolbar) üzerinden alt sınıfların methodlarını çağırarak programa aktardığını görücez.

C# Görsel Programlamaya başlarken dikkat edilmesi gereken kurallar

  • Her nesneye ait name ozelliği özgün olmalıdır. Form içerisinde aynı name özelliğine sahip nesne bulunamaz. Bu kurallar method ve değişkenlerde de geçerlidir.
  • Nesne isimlerine mantıklı isimler vermek programcının hızını artıracak ve kafasını kurcalamayacaktır.
  • Tasarım aşaması ilk aşamada yapılmalıdır. Tasarım aşamasında değişken isimler, tasarım arkaplanları ve diğer dizayn aşamaları bulunur.

En çok kullanılan C# Görsel Programalama kontrolleri:

Visible: İki değeri bulunmaktadır. Bunlar True ve False değerleridir. True değeri nesnenin görünmesini sağlarken, False değeri nesneyi görünmez yapar.

Kullanımı:

button1.Visible = true; // şuan butonumuz görünümü açık-görünür
button1.Visible = false; // şuan butonumuzun görünümü kapalı-görünmez

 

Text:

Nesne üzerindeki metni verir. Örneğin form uygulamamız içerisinde bir button var. Bu buttonun üzerinde Gönder yazıyorsa text özelliği bize “Gönder” metnini verir.

Kullanımı:

MessageBox.Show(button1.Text); // Şu anda uyarı penceresi içerisinde button1'in metnini yazdırdık.

Backcolor Arkaplan anlamına gelmektedir. Nesnenin-metnin arkaplanını belirlermeye yarar.
Kullanımı:

button1.BackColor = Color.Blue; // Metnin içerisindeki dolguyu mavi yaptık.

Forecolor: Önplan demektir. Nesne içerisindeki veya nesnenin kendisindeki metin rengini belirler.
Kullanımı:

button1.ForeColor = Color.Blue; // buttonun içerisindeki metni mavi yaptık.

Color:
Color bir sınıftır. Bu sınıfı kullanmak için programımızın en üst kısmında Using System.Drawing; uzay alanını kullanacağınızı belirtmeniz gerekir.

Olaylar

Bringtofront -> en üst
Sentoback -> en alt
Hide -> gizle
Show – göster

Buttona tıklanıldığında çalışması gereken bir takım belirtilen özellikler varsa bunları yapacağız. Mouse ile tuşuna basıldığında / bırakıldığında / enter girildiğinde / çıkıldığında buna benzer birbirinden farklı kullanıcının meydana getirebileceği veya meydana getirilebilecek olaylar hangi kod çalışacaksa o olaya ilişkin kodları yazmamız gerekebilecek.

C#’da Methodların aşırı yüklenmesi

C#’da Methodların aşırı yüklenmesi:

c_sharp_programlama
Methodların aşırı yüklenmesi farklı tiplerdeki değişken ve diğer methodlara tek bir tipten erişebilme durumudur. Methodların aşırı yüklenme durumuna bir örnek vermek gerekirse WriteLine komutunu verebiliriz. bukomutun 18 tane farklı methodu vardır fakat bu 18 methodun tümüne aynı isimde erişiriz. Bu durumun aynısını oluşturacağımız programlar içerisinde gerçekleştirebiliriz.

Public void UrunAra (int UrunId)
{
// Urunnumarasına göre arama yapılır
}

Public int UrunAra(string UrunIsmi)
{
// Ürün ismieng öre arama yapılır
// Bulunan ürün nuanmrası döndürülür
}

Public int Urunara (string urunismi,dateTime Uretim Tarihi)
{
// Ürün ismine ve üretimr göre arama yapılrı
// bulunan ürünün numarsı döndürülür
}

Methodların birbirinden farklılaşmasını sağlayan yapılar içerisinde parametrelerdir.  Metodun geri dönüş değeri özellikle parametrelerin sayısı ve tipi neyse buna göre uygun bir şekilde çalışmasını sağlar. Bu ilişkili method neyse programa tanımlarız. Bunu da public ile yaparız.

  • İmzaları aynı olan metotlar tanımlanamaz.
  • Fonksiyonlar yordamlara, yordamlarda fonksiyonlarla aşırı yüklenebilir.
  • Fonksiyonlar dönüş tiplerine göre aşırı yüklenemez

C#’da methodların aşırı yüklenmesi örneği:

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 int ucgen(int kenar, int yukseklik)
{
return (kenar * yukseklik / 2);
}

public int ucgen(int kenar1, int kenar2, int kenar3)
{
return (kenar1 + kenar2 + kenar3);
}

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
textBox1.Visible = false;
textBox2.Visible = false;
textBox3.Visible = false;
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

switch(comboBox1.SelectedIndex)
{
case 0: textBox1.Visible = true; textBox2.Visible = true; break;
case 1: textBox1.Visible = true; textBox2.Visible = true; textBox3.Visible = true; break;
default: MessageBox.Show("Hata!"); break;
}

}

private void button1_Click(object sender, EventArgs e)
{
int s1, s2, s3=0, cevre, alan;
s1 = Convert.ToInt32(textBox1.Text);
s2 = Convert.ToInt32(textBox2.Text);
if (comboBox1.SelectedIndex == 1) { s3 = Convert.ToInt32(textBox3.Text); }
alan = ucgen(s1, s2);
cevre = ucgen(s1, s2, s3);
if (comboBox1.SelectedIndex == 0) { label2.Text = Convert.ToString(alan); }
else { label2.Text = Convert.ToString(cevre); }
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox1.Visible = false;
textBox2.Visible = false;
textBox3.Visible = false;

}
}
}