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 |
| % |
Burada Havadan Sudan Bahsedip yormadim sizi zmler ve sonular var