banner Burada Havadan Sudan Bahsedip yormadim sizi zmler ve sonular var

Updates: 2.5 surumune getim denemelerim devam ediyor. More...
Jun
28th

C## Windows Form Basic( c sharp windows baslangic)

Yazar: admin | dosya .net c##

 

 

Visual C#.NET ile Windows Tabanlı Programlama makalesinde, Windows Formlarına ve kontrollerine giriş yapılmıştı. .NET çatısında, Windows uygulamalarının görünüm ve kullanım zenginliğini artırmak için birçok kontrol vardır. Visual Studio ile varsayılan olarak gelen kontrollerin dışında birçok kontrol de Windows uygulamalarına eklenebilir.

 

Bu makaleyi tamamlandıktan sonra:

· ListBox, TreeView, ComboBox gibi listeleme kontrollerini tanıyacak,

· PictureBox, ImageList gibi resim kontrollerini tanıyacak,

· TabControl, Panel, HScrollBar, VScrollBar gibi düzenleme kontrollerini tanıyacak,

· DateTimePicker, MonthCalendar gibi zaman ve tarih kontrollerini tanıyacak

· Çalışma anında forma yeni kontroller oluşturup ekleyebileceksiniz.

Konu 1: Formlar ve Windows Forms Kontrolleri

Form Nesnesi

 

Windows uygulamaları, kullanıcı ile iletişimi Form nesneleri ile sağlar. Formlar, görünüm özellikleri, pencere stili değiştirilerek ve üzerine kontroller eklenerek özelleştirilir. Ayrıca birden çok form nesnesi kullanılarak, uygulamalar zenginleştirilir.

Birden Fazla Form Oluşturmak

Windows uygulamaları birden fazla form nesnesinden oluştuğu için, projelere form eklemek her zaman gereklidir. Bir Windows projesine yeni bir form eklemek için:

 

1. Solution Explorer panelinden projeye sağ tıklayarak ya da Project menüsünden Add Windows Form komutunu seçilir.

2. Çıkan menüden Windows Form öğesinin seçili olduğuna kontrol edilir ve bir isim verilerek form eklenir.

 

Başlangıç formlarının ayarlanmasının yanı sıra, uygulamada bir formdan başka bir formun açılması ve ayarlanması sık karşılaşılan bir durumdur. Form nesneleri, System.Windows.Forms namespace içinde bulunan Form sınıfından türemiş sınıflardır. Dolayısıyla yeni bir Form oluşturmak için, istenen Form sınıfından bir nesne oluşturulması yeterlidir.

frmYeni yeniForm = New frmYeni;

 

Yeni oluşturulan formların gösterilmesi, formun Show ve ShowDialog metotları ile yapılır. ShowDialog metodu, form gösterildikten sonra, kapanana kadar diğer formlara erişimi engeller. ShowDialog metodundan sonra yazılan kodlar, form kapandıktan sonra çalıştırılır.

frmYeni yeniForm = New frmYeni;

yeniForm.ShowDialog();

 

// Bu kodlar yeniForm kapandıktan sonra çalıştırılır

MessageBox.Show(“Form kapandı…”) ;

 

ShowDialog ile gösterilen formlar, hangi durum ile kapandıklarını belirten bir DialogResult sonucu döndürürler. Bu kullanım MessageBox.Show hazır fonksiyonu ile aynıdır.

 

frmSatis frm = New frmSatis;

if (frm.ShowDialog == DialogResult.Yes)

{

// Verileri kaydet

}

 

Formun hangi diyalog sonucu ile döneceğini, üzerindeki Button kontrollerinin DialogResult özelliği ile belirlenir. Eğer düğmenin bu özelliği Yes olarak ayarlanmışsa, Form bu düğmeye basılıp kapandığı zaman, DialogResult.Yes değerini döndürür.

 

Örneğin bir Windows uygulamasının, kullanıcının girdiği verilere göre değişik formların açması için Main yordamından faydalanılır.. Bu yordamda, kullanıcının istediği form dinamik olarak yüklenir.

 

public void Main1() {

string grup = null, parola = null;

 

grup = Interaction.InputBox( "Kullanıcı grubu:", "", "", -1, -1 );

parola = Interaction.InputBox( grup + " grubuna giriş için parola girin:", "", "", -1, -1 );

 

// Grupların parolası kontrol edilir

// ve ilgili grubun formu açılır.

// Eğer parola veya grup ismi yanlış girilirse

// hata formu yüklenir.

 

switch ( grup.ToUpper() ) {

case "SATIŞ":

if ( parola.ToUpper() != "SATIS_PAROLA" ) {

HataFormuYukle( "Satış departmanı parolası yanlış!" );

}

else {

frmSatis satisDepartmani = new frmSatis();

satisDepartmani.ShowDialog();

}

 

break;

case "YÖNETİM":

if ( parola.ToUpper() != "YONETIM_PAROLA" ) {

HataFormuYukle( "Yönetim departmanı parolası yanlış!" );

}

else {

frmYonetim yonetimDepartmani = new frmYonetim();

yonetimDepartmani.ShowDialog();

}

 

break;

default:

HataFormuYukle( grup + " isminde bir grup bulunamadı" );

 

break;

}

 

}

 

// Hata formu, verilen parametredeki mesajı

// gösterecek şekilde ayarlanır ve yüklenir.

public void HataFormuYukle( string mesaj ) {

frmHata hataFormu = new frmHata();

hataFormu.lblHataMesaji.Text = mesaj;

hataFormu.ShowDialog();

}

 

Aynı Windows projesi içinde açılan formlar açılmadan önce kontrollerinin özellikleri değiştirilebilir. Örneğin hata formu gösterilmeden önce, üzerindeki Label kontrolünün Text özelliği ilgili hata mesajını gösterecek şekilde ayarlanabilir.

 

Form Özellikleri:

Özellik

Değer Tipi

Açıklama

AcceptButton

Button

Form üzerinde Enter tuşuna basıldığı zaman “tıklanacak” Button kontrolü

CancelButton

Button

Form üzerinde Esc tuşuna basıldığı zaman “tıklanacak” Button kontrolü

Opacity

Double

Formun şeffaflık oranı (0 -1 arası)

MaximizeBox

Boolean

Ekranı Kapla düğmesinin görünürlüğü

MaximizeBox

Boolean

Simge Durumunda Küçült düğmesinin görünürlüğü

ControlBox

Boolean

Close, Maximize ve Minimize düğmelerinin tümünün görünürlüğü

StartPosition

FormStartPosition

 

Form açıldığı zaman, ekran üzerindeki konumu

TopMost

Boolean

Formun tüm pencerelerin üzerinde gözükmesi

FormBorderStyle

FormBorderStyle

Formun kenar stili

MaximumSize

Size

Formun alabileceği maksimum büyüklük

MinimumSize

Size

Formun alabileceği minimum büyüklük

 

Form Olayları:

Olay

Açıklama

Click

Form üzerine tıklandığı zaman gerçekleşir

Closing

Form kapanmadan hemen önce gerçekleşir

Closed

Form kapandıktan sonra gerçekleşir

Load

Form yüklenirken gerçekleşir

KeyDown

Form üzerindeyken bir tuşun basılması ile gerçekleşir

KeyUp

Basılan tuşun kaldırılması ile gerçekleşir

 

Form Metotları:

Metot

Açıklama

Hide

Formu Visible özelliğini False yaparak, gizler

Close

Formu kapatır. Eğer form başlangıç formuysa uygulama sonlanır

Show

Formu gösterir. Hide ile gizlenmişse, Visible özelliği True yapılır.

ShowDialog

Formu diyalog kutusu olarak gösterir.

 

Örnek: Bir Windows formunun kapanmasını yönetmek için, o formun Closing olayına ve Close metoduna ihtiyaç vardır. Kapanmasını yavaşlatmak için bir Timer kontrolü kullanılır ve formun şeffaflığı yavaşça azaltılır.

 

private void Form1_Load( System.Object sender, System.EventArgs e ) {

this.Text = "Hogeldiniz… " + DateTime.Now;

}

 

private void Form1_Closing( object sender, System.ComponentModel.CancelEventArgs e ) {

// Kapanma olayı gerçekleşmeden önce iptal edilir

e.Cancel = true;

Timer1.Start();

}

 

private void Form1_KeyDown( object sender, System.Windows.Forms.KeyEventArgs e ) {

// Shift-Ctrl-F3 tuşları basıldığında uygulama kapanır

if ( e.Shift & e.Control & e.KeyCode == Keys.F3 ) {

this.Close();

}

}

 

private void Timer1_Tick( System.Object sender, System.EventArgs e ) {

// Formun görünmez hale gelince uygulama kapanır

if ( this.Opacity == 0 ) {

Application.Exit();

}

else {

this.Opacity -= 0.1;

}

}

Label

 

Label kontrolü Form üzerinde kullanıcıya bilgi vermek amaçlı kullanılan etikettir.

Label Özellikleri

 

Özellik

Değer Tipi

Açıklama

TextAlign

ContentAlignment

Yazının, etiket üzerindeki pozisyonu belirler.

BorderStyle

BorderStyle

Kontrolün kenar stilidir. FixedSingle değeri, kontrolün kenar çizgilerini gösterir. Fixed3D değeri, kenarların üç boyutlu olmasını sağlar

Image

Drawing.Image

Etiket üzerinde görüntülenmek istenen resmi tutar

ImageAlign

ContentAlignment

Etiket üzerindeki resmin nerede duracağını belirler

RightToLeft

RightToLeft

Etiket üzerindeki yazının yönünü belirler. Eğer Yes değerini alırsa, yazılar sağdan sola gösterilir

 

Label1.BorderStyle = BorderStyle.Fixed3D;

 

// Visual Studio klasörü altındaki simgeler kullanılabilir

Label1.Image = Image.FromFile("C:\Program Files\ _

Microsoft Visual Studio .NET 2003\Common7\Graphics\icons\Flags\FLGTURK.ICO");

 

Label1.ImageAlign = ContentAlignment.MiddleRight;

Label1.RightToLeft = RightToLeft.Yes;

Label1.Text = "Türkçe";

 

 

 

NOT: Resmin bulunduğu yer kontrolün sağ tarafında bulunacak şekilde ayarlanmasına rağmen sol tarafta gözükür. Bu durum, RightToLeft özelliğinin Yes olarak atanmasından kaynaklanır.

TextBox

 

Metin kutuları, kullanıcıdan bilgi almak için kullanılır.

TextBox Özellikleri

 

Özellik

Değer Tipi

Açıklama

MultiLine

Boolean

Metin kutusuna birden fazla satırda değer girilebilmesini sağlar. False durumunda ise, metin kutusunun yüksekliği değiştirilemez

ScrollBars

ScrollBars

Metin kutusunda kaydırma çubuklarının görünmesi. Varsayılan olarak kaydırma çubuğu görüntülenmez, ancak Horizontal, Vertical kaydırma çubukları ya da ikisi birden gösterilebilir.

PasswordChar

Char

Metin kutusuna parola girilecekse, girilen karakterlerin hangi karakter olarak görüneceğini belirler.

WordWrap

Boolean

Metin kutusuna girilen değerlerin, satır sonlandığında bir alt satıra geçilmesini belirtir. Eğer MultiLine özelliği False ise, alt satırlar tanımlı olmayacağı için bu özelliğin bir etkisi görülmez.

MaxLength

Integer

Metin kutusunun alabileceği maksimum karakter sayısını belirtir.

ReadOnly

Boolean

Metin kutusunun yazmaya karşı korumalı olduğunu belirtir.

CharacterCasing

CharacterCasing

Metin kutusuna karakterler girilirken büyük veya küçük harfe çevrilmesini sağlar. Upper değeri büyük, Lower değeri küçük harfe çevrimi sağlar.

 

TextBox Olayları

 

Olay

Açıklama

TextChanged

Metin kutusundaki yazı değiştiği zaman gerçekleşir.

TextBox Metotları

 

Metot

Açıklama

Cut

Seçilen karakterleri siler ancak hafızada tutar.

Copy

Seçilen karakterleri kopyalar

Paste

Hafızaya alınan karakterleri metin kutusuna yapıştırır

Clear

Metin kutundaki yazıları temizler

SelectAll

Metin kutusundaki tüm yazıyı seçer

 

Örnek: Form üzerinde girilen değerlere göre tek sayıların hesaplanması ve görüntülenmesi işlemi için TextBox kontrolünün birçok olayından ve özelliğinden yararlanılır.

 

 

 

private void Form1_Load( System.Object sender, System.EventArgs e ) {

// Form yüklenirken kontrollerin ayarlanması:

txtAltSayi.MaxLength = 2;

txtUstSayi.MaxLength = 4;

 

txtSayilar.Multiline = true;

txtSayilar.ScrollBars = ScrollBars.Vertical;

 

txtClipBoard.ReadOnly = true;

txtClipBoard.Multiline = true;

}

 

// Bu olay hem txtUstSayi hem de txtAltSayi kontrolünün

// TextChanged olayında gerçekleşir.

// Handles ifadesinden sonra kontroller virgülle ayrılmıştır

private void txtUstSayi_TextChanged( System.Object sender, System.EventArgs e ) {

TekSayiYazdir();

}

 

public bool Kontrol() {

// Metin kutularına sayı girildiyse

if ( IsNumeric( txtUstSayi.Text ) & IsNumeric( txtAltSayi.Text ) ) {

// ve alt limit 0 dan büyük, ve üst limitten küçükse

int ust = txtUstSayi.Text;

int alt = txtAltSayi.Text;

if ( ust > alt & alt > 0 ) {

// giriş doğru yapılmıştır

return true;

}

}

 

// Kod buraya gelirse, giriş yanlış yapılmıştır

return false;

}

 

public void TekSayiYazdir() {

if ( !( Kontrol() ) ) { return; }

 

txtSayilar.Clear();

int alt = txtAltSayi.Text;

int ust = txtUstSayi.Text;

 

// Sayılar metin kutusuna, tek sayıların yazdırılması

for ( i=alt; i<=ust; i++ ) {

if ( i % 2 == 1 ) {

txtSayilar.Text += i + Constants.vbCrLf;

}

}

}

 

// Sayıların txtClipboard isimli metin kutusuna kaydedilmesi:

private void btnKaydet_Click( System.Object sender, System.EventArgs e ) {

txtClipBoard.Text = txtSayilar.Text;

 

// Sayıların kopyalanması için, önce seçilmesi gerekir

txtSayilar.SelectAll();

txtSayilar.Cut();

}

 

// Cut yordamı çağırıldıktan sonra veriler kopyalanır.

// Paste ile bu kopyalanan veriler geri yazdırılır.

private void btnYukle_Click( System.Object sender, System.EventArgs e ) {

txtSayilar.Clear();

txtSayilar.Paste();

}

Button

 

Windows uygulamalarında, form üzerinde komut düğmeleri olarak kullanılır.

Button Özellikleri

 

Özellik

Değer Tipi

Açıklama

DialogResult

DialogResult

Ait olduğu form ShowDialog metodu ile çağrıldığı zaman, dönüş değerini belirler

FlatStyle

FlatStyle

Düğmeye basıldığında ve düğmenin üzerine gelindiğinde görünen formatı belirler

Button Olayları

 

Olay

Açıklama

Click

Düğme üzerine tıklandığı zaman gerçekleşir

 

Örnek: Bir formun üzerindeki düğmelerin DialogResult özellikleri değiştirilerek, özel bir mesaj kutusu tasarlanabilir.

 

 

 

private void btnIslemYap_Click ( System.Object sender, System.EventArgs e ) {

OnayFormu onay = New OnayFormu;

 

onay.btnHayir.DialogResult = DialogResult.No;

onay.FlatStyle = FlatStyle.Flat;

 

onay.btnEvet.DialogResult = DialogResult.Yes;

onay.btnEvet.FlatStyle = FlatStyle.Flat;

 

if (onay.ShowDialog == DialogResult.Yes)

// Kayıt işlemleri…

}

CheckBox

 

Kullanıcının birçok seçeneği birden seçmesi için kullanılır.

CheckBox Özellikleri

 

Özellik

Değer Tipi

Açıklama

Checked

Boolean

Kontrolün seçili olup olmadığını belirler

CheckAlign

ContentAlignement

Seçme kutusunun ve üzerinde yazan metnin birbirlerine göre konumlarını belirler

Appearance

Appearance

Kontrolün seçme kutusu ya da düğme şeklinde olmasını belirler

ThreeState

Boolean

Seçili olup olmaması dışında, Intermediate durum da eklenir. Eğer kontrol Intermediate durumundaysa Checked özelliği True olur.

AutoChecked

Boolean

Kontrole basıldığı zaman seçili duruma geçileceğini belirtir. Eğer bu özellik False ise, kontrolün durumunu değiştirmek için, Click olayında, Checked özelliğini güncellemek gerekir

CheckBox Olayları

Olay

Açıklama

CheckChanged

Seçme kutusunun durumu değiştiği zaman gerçekleşir.

 

Örnek: Bir GSM şebekesinden faturalı hat açılışında toplam tutar hesaplanırken, bazı seçenekler CheckBox kontrolleri ile sunulabilir.

 

 

// Form üzerindeki tüm seçme kutularının durumu

// değiştiği zaman, toplam fiyat tekrar hesaplanır

 

double toplam = txtAcilisTutari.Text;

 

// İlk faturada 22 YTL açılış bedeli eklenir

if ( cbOzelIletisimIlkFatura.Checked ) {

toplam += 22;

}

 

// KDV eklenir

if ( cbKDV.Checked ) {

toplam *= 1.18;

}

 

// Özel İletişim vergisi eklenir

if ( cbOzelIletisim.Checked ) {

toplam *= 1.25;

}

 

txtToplam.Text = toplam;

RadioButton

 

RadioButton kontrolleri, kullanıcıya sunulan seçeneklerden sadece bir tanesinin seçilmesine izin verir. Form üzerinde birden fazla RadioButton konulduğunda bu kontrollerin sadece bir tanesi seçili olabilir. Fakat bazı durumlarda, farklı seçenek grupları kullanılarak kullanıcının birden fazla seçim yapması istenebilir. Bu durumda, bazı seçenekler GroupBox kontrolü ile gruplanmalıdır.

 

Bu kontrolün özellikleri ve olayları CheckBox kontrolü ile aynıdır. Sadece bir seçenek seçilebildiği için, kontrollerin yapılması CheckBox kontrolüne göre daha kolaydır.

GroupBox

Bu kontrol kontrollerin mantıksal bir düzende gruplanması için kullanılır. İçinde bulunan kontrollerin işleyişlerinde bir farklılık görünmez. Bir grup RadioButton kontrolünün, diğer RadioButton kontrollerinden etkilenmemesi için kullanılır.

Panel

GroupBox kontrolü gibi, kontrollerin belli bir düzende gözükmesini sağlamak için kullanılır. GroupBox kontrolünden farkı olarak yatay ve dikey kaydırma çubuklarının bulunur, ancak Panel üzerinde başlık yazısı bulunmaz.

Panel özellikleri

Özellik

Değer Tipi

Açıklama

AutoScroll

Boolean

Panelde kaydırma çubuklarının görünürlüğünü belirler

 

Paneller, seçeneklere göre bir grup kontrolün gizlenmesi veya görüntülenmesi aşamasında etkili bir rol oynar.

 

Örnek: RadioButton, GroupBox ve Panel kontrolleri, BilgeAdam eğitim anketi formunun tasarımında kullanılabilir. Anket, bir eğitimin ürünleri hakkında yapılır. Anket bilgileri eğitim araç gereçleri ve eğitim içeriği üzerinde “çok iyi” den “çok kötü” ye kadar bir değer verilmesiyle oluşturulur. Sonuç olarak elde edilen anket bilgileri kullanıcıya gösterilerek onaylaması beklenir.

 

 

 

· Global değişkenlerin oluşturulması:

// Ozet bilgilerinin tutulduğu değişken

private string AnketOzet;

 

// Onaylama düğmesinin aktif hale gelmesi için

// tüm oylamaların yapılmış olması gerekir

private bool IcerikOyuSecildi, AracOyuSecildi;

 

· Formun yüklenmesi sırasında, kontroller üzerinde yapılan ayarlar:

private void Form1_Load( System.Object sender, System.EventArgs e ) {

// Sistem ve yazılım seçeneklerini tutan

// GroupBox kontrolleri gizlenir:

grpSistem.Visible = false;

grpYazilim.Visible = false;

 

// Anketleri tutan Panel kontrolü gizlenir

pnlAnket.Visible = False;

 

// Onayla düğmesi oylamadan önce pasif haldedir

btnOnayla.Enabled = False;

}

 

· Eğitimler seçildiklerinde, ilgili alt seçeneklerin görüntülenmesi sağlanır. Alt seçenekler, ayrı GroupBox kontrollerinde tutulur.

 

private void rbYazilim_CheckedChanged( System.Object sender, System.EventArgs e ) {

// GroupBox kontrollerini görünümleri, eğitimleri

// seçili olmasıyla doğru orantılıdır.

grpYazilim.Visible = rbYazilim.Checked;

grpSistem.Visible = rbSistem.Checked;

 

UrunTemizle();

pnlAnket.Visible = False;

}

 

// Ürünler başlangıç değerlerine çevrilir

void UrunTemizle() {

rbMCSD.Checked = False;

rbMCSE.Checked = False;

rbSistemUzmanligi.Checked = False;

rbYazilimUzmanligi.Checked = False;

}

 

· Alt ürünler seçildiklerinde, anket paneli görüntülenir ve panelin karşılama mesajında, ilgili ürünün ismi gösterilir.

private void rbSistemUzmanligi_CheckedChanged( System.Object sender, System.EventArgs e ) {

string panelMesaji;

 

// Bu olayı tetikleyen RadioButton kontrolü alınır

RadioButton basilan = sender;

 

lblKarsilamaMesaji.Text = basilan.Text + " iin anket girişi:";

pnlAnket.Visible = true;

}

 

· Anketlerde, ilgili konularda oylama yapıldığı zaman, oylama düğmesi aktif hale getirilir ve anket mesajı oluşturulur.

 

// Eğitim içeriği için verilen oy

private void rbCokIyi_Icerik_CheckedChanged( System.Object sender, System.EventArgs e ) {

IcerikOyuSecildi = true;

 

RadioButton basilan = sender;

AnketOzetiCikar( "Eitim ierii: " + basilan.Text );

 

}

 

// Eğitim araç gereçleri için verilen oy

 

private void rbCokIyi_Arac_CheckedChanged( System.Object sender, System.EventArgs e ) {

AracOyuSecildi = true;

 

RadioButton basilan = sender;

AnketOzetiCikar( "Eitim ara gereleri: " + basilan.Text );

}

 

public void AnketOzetiCikar( string ozet ) {

AnketOzet += ozet + Constants.vbCrLf;

 

if ( IcerikOyuSecildi & AracOyuSecildi ) {

btnOnayla.Enabled = true;

}

}

 

Anket bilgileri oluşturulduktan sonra, onay düğmesi aktif hale gelir. Bu düğmeye basıldığı zaman kullanıcıya girdiği bilgiler mesaj kutusu ile gösterilir. Kullanıcı onayladıktan sonra kayıt işlemleri gerçekleşir.

 

private void btnOnayla_Click( System.Object sender, System.EventArgs e ) {

string mesaj;

mesaj = "Yaplan anket sonucu: " + Constants.vbCrLf + AnketOzet + Constants.vbCrLf;

mesaj += "Bilgileriniz kaydedilecektir. Devam etmek istiyor musunuz?";

 

if ( MessageBox.Show( mesaj, MsgBoxStyle.YesNo, "Anket Sonucu" ) == DialogResult.No ) {

return;

}

else {

// Anket kayıt işlemleri…

}

}

ListBox

 

Kullanıcıya sunulan seçeneklerin bir liste halinde görünmesini sağlar. Liste kutusundan istenen sayıda öğe seçilebilir.

ListBox Özellikleri

Özellik

Değer Tipi

Açıklama

Items

ListBox.ObjectCollection

Liste kutusuna eklenen öğelerin tutulduğu koleksiyon nesnesidir.

SelectedItem

Object

Liste kutusundan seçilen öğeyi alır.

SelectedItems

SelectedObjectCollection

Liste kutusundan seçilen öğeleri alır. Seçilen öğeler dinamik bir dizide tutulur.

SelectedIndex

Integer

Liste kutusundan seçilen öğenin indisini alır.

SelectedIndices

SelectedIndexCollection

Liste kutusundan seçilen öğelerin indislerini bir koleksiyon nesnesinde tutar.

DataSource

Object

Listenin öğelerinin tutulduğu veri kaynağıdır. Veri kaynağı boş geçilirse Items koleksiyonuna eklenen öğeler görüntülenir.

DisplayMember

String

Veri kaynağından gelen öğelerin, kullanıcıya gösterilecek özelliğidir.

ValueMember

String

Veri kaynağından gelen öğelerin, dönüş değerini belirleyen özelliğidir.

SelectedValue

Object

Seçilen öğenin, liste kutusunun ValueMember ile belirtilen özelliğidir.

SelectionMode

SelectionMode

Liste kutusundan kaç tane öğe seçilebileceğini belirtir. None değeri 0, One değeri 1, MultiSimple ve MultiExtended değerleri birden fazla öğenin seçilebileceğini belirtir.

MultiColumn

Boolean

Liste kutusundaki öğelerin biden fazla kolonda görüntülenmesini belirler.

 

ListBox Olayları

Olay

Açıklama

SelectedIndexChanged

Liste kutusunda bir öğe seçildiği zaman gerçekleşir.

ListBox Metotları

Metot

Açıklama

GetItemText

Parametre olarak verilen nesnenin liste kutusunda gösterilen yazısını döndürür.

GetSelected

Parametre olarak verilen indisteki öğenin seçili olup olmadığını döndürür.

FindString

Parametredeki String ifadesini liste kutusunda arayarak, bulduğu ilk öğenin indisini döndürür

Örnek: Tedarikçiden alınacak ve stokta bulunan ürünleri listelemek ve alım satım işlemi yapmak için ListBox kontrolleri kullanılabilir.

 

 

 

· Ürünlerin tutulması için bir Struct oluşturulur. Bu ürün yapısının ToString metodu tekrar yazılmıştır. Bunun nedeni, ListBox kontrolünde listelenen nesnelerin görüntülendiği değer ToString metodu çağırılarak belirlenir. Dolayısıyla liste kutularında istenen formatta değerin gözükmesini sağlamak için ToString metodunun tekrar yazılması gerekir.

public struct Urun {

public string Ismi;

public double Fiyat;

 

public Urun( string UrunIsim, double UrunFiyat ) {

Ismi = UrunIsim;

Fiyat = UrunFiyat;

}

 

public override string ToString() {

return string.Format( "{0} - {1:C}", Ismi, Fiyat );

}

 

}

· Liste kutularının özellikleri ayarlanır ve içine eleman doldurulur.

private void Form1_Load( System.Object sender, System.EventArgs e ) {

lbTedarikci.SelectionMode = SelectionMode.MultiExtended;

lbStok.SelectionMode = SelectionMode.MultiExtended;

 

UrunEkle();

}

 

public void UrunEkle() {

Urun u = new Urun();

 

u = new Urun( "Kalem", 1.49 );

lbTedarikci.Items.Add( u );

u = new Urun( "Silgi", 0.39 );

lbTedarikci.Items.Add( u );

u = new Urun( "Defter", 4.99 );

lbTedarikci.Items.Add( u );

u = new Urun( "Cetvel", 1.99 );

lbTedarikci.Items.Add( u );

u = new Urun( "Pergel", 2.99 );

lbTedarikci.Items.Add( u );

u = new Urun( "Not Defteri", 3.79 );

lbTedarikci.Items.Add( u );

 

}

· Tedarikçi liste kutusundan, stok liste kutusuna öğe aktarılması için, seçilen değerler önce liste kutusuna eklenir. Daha sonra bu seçilen değerler, diğer listede olmayacağı için tek tek çıkartılır.

 

private void btnEkle_Click( System.Object sender, System.EventArgs e ) {

// Tedarikçiden alınan ürünler stok listesine eklenir

foreach ( object item in lbTedarikci.SelectedItems ) {

lbStok.Items.Add( item );

}

// Stok listesine eklenen tüm ürünler

// tedarikçi listesinden çıkartılır

foreach ( object item in lbStok.Items ) {

lbTedarikci.Items.Remove( item );

}

 

btnCikar.Enabled = true;

btnHesapla.Enabled = true;

}

· Stok listesinden öğe çıkarmak için, ekleme işlemine benzer kodlar çalıştırılır.

private void btnCikar_Click( System.Object sender, System.EventArgs e ) {

// Tedarikçiden alınan ürünler stok listesine eklenir

foreach ( object item in lbStok.SelectedItems ) {

lbTedarikci.Items.Add( item );

// Stok listesine eklenen tüm ürünler

// tedarikçi listesinden çıkartılır

foreach ( object item in lbTedarikci.Items ) {

lbStok.Items.Remove( item );

}

 

if ( lbStok.Items.Count == 0 ) {

btnCikar.Enabled = false;

btnHesapla.Enabled = false;

}

}

 

· Stoktaki toplam fiyatın hesaplanması işlemi, ürünlerin fiyatlarının alınıp toplanması ile gerçekleşir.

private void btnHesapla_Click( System.Object sender, System.EventArgs e ) {

double toplam = 0;

 

for (int i=0; i<=lbStok.Items.Count - 1; i++ ) {

Urun urun = ( ( WindowsApplication8.Form1.Urun )( lbStok.Items[ i ]) );

toplam += urun.Fiyat;

}

lblToplam.Text = System.Convert.ToString( toplam );

}

 

· Stok listesindeki bir öğenin seçildiği durumda, bu öğenin fiyatı görüntülenir.

private void lbStok_SelectedIndexChanged( System.Object sender, System.EventArgs e ) {

Urun secilen = new WindowsApplication8.Form1.Urun();

secilen = ( (Urun )( lbStok.SelectedItem ) );

 

lblUrunFiyat.Text = string.Format( "{0:C}", secilen.Fiyat );

}

 

CheckedListBox

 

Liste kutusunun tüm özellik, metot ve olaylarını alır ve listedeki öğelerin işaret kutusu ile gösterilmesini sağlar.

CheckedListBox Özellikleri

Özellik

Değer Tipi

Açıklama

%


Yorum Gönder