Bu Derste Öğrenecekleriniz: 1. GroupBox 2. CheckBox 3. RadioButton 4. NumericUpDown 5. DateTimePicker 6. PictureBox 7. Hata Kontrolü Visual C# ta genel olarak kullanılan kontrollerden bazıları aşağıda gösterilen listedeki gibidir. No Adı Araç Çubuğu Görünümü 1 GroupBox Kontrolleri Gruplama kutusu 2 CheckBox İsteğe bağlı Seçim kutucuğu 3 RadioButton Birden fazla seçenekten sadece birini seçme kutusu 4 NumericUpDown Artırılıp azaltılabilen sayı kutusu 5 DateTimePicker Tarih Seçici 6 PictureBox Resim kutusu Aşağıdaki formda yukarıda bahsi geçen tüm kontroller kullanılmıştır. Bu form, size bu kontrollerin nasıl ve ne amaçla kullanılabileceği hakkında fikir verebilir. Şimdi bunlardan her birisini ayrıntılı olarak tanıyacağız: 1. GroupBox İçine kontrol alabilen bir başlık yazısı ve çerçeveden oluşur. Tipik olarak RadioButton gibi kontrolleri gruplamak için kullanılır. Başlık yazısı Text özelliği ile kontrol edilir. groupbox1.text = "Cinsiyet"; // groupbox kontrolünün yazısı cinsiyet olarak ayarlanıyor. 1 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi
2. CheckBox Kullanıcıya bir seçenek vermek için örneğin evet/hayır veya doğru/yanlış için kullanılır. Seçili olup olmaması Checked özelliği ile kontrol edilir. Appearance özelliği ile görünümü bir buton şeklinde ayarlanabilir. CheckAlign özelliği ile işaretlenecek alan sağa, sola, alta, üste alınabiliyor. CheckBox kontrolleri programlamada genellikle chk ile başlayan isimler ile isimlendirilir. Zorunlu değildir ancak programda anlaşılır olması için bir stildir. Örneğin chkanlasmakabul. Appearance Appearance.Normal CheckBox kontrolünün görünümünü ayarlamak için kullanılır. Appearance.Button CheckAlign ContentAlignment.BottomCenter ContentAlignment.BottomLeft ContentAlignment.BottomRight ContentAlignment.MiddleCenter ContentAlignment.MiddleLeft ContentAlignment.MiddleRight ContentAlignment.TopCenter ContentAlignment.TopLeft ContentAlignment.TopRight CheckBox kontrolünün işaretlenecek kutunun hizalanmasını sağlar. CheckState CheckBox kontrolünün işaretleme durumunu kontrol etmek için kullanılır. CheckState.Checked CheckState.Indeterminate CheckState.Unchecked FlatStyle CheckBox kontrolünün flat görünümünü ayarlamak için kullanılır. FlatStyle.Flat FlatStyle.Popup FlatStyle.Standard FlatStyle.System* * System görünümü ile Standard görünüm aynı görünse de System üzerindeki resmi (üzerinde resim varsa ) gösterez, ama Standard ve diğer görünümler gösterir. 2 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi
CheckBox için sık kullanılan diğer bazı özellikler: Checked İşaretlenmiş olup olmadığını kontrol eder bool ThreeState True yapılırsa iki yerine, üç farklı şekilde işaretlenmesini bool sağlar. (Seçili, Belirsiz, Seçili olmayan) TextAlign ImageAlign Yazının veya resmin hizalanmasını kontrol eder ContentAlignment Text Üzerindeki yazıyı kontrol eder string CheckBox konrolünde en çok CheckedChanged eventi kullanınılır. private void checkbox1_checkedchanged(object sender, EventArgs e) // check edilince veya check kaldırılınca burası çalışır CheckBox kontrolleri program içerisinde genellikle aşağıdaki şekilde kullanılır. Örneğin anlaşma metninin kabul edilip edilmediğini aşağıdaki şekilde kontrol edebiliriz. if (chkanlasmakabul.checked == true) // seçili ise burası çalışır. MessageBox.Show("Anlaşma kabul edilmiştir."); else // seçili değilse burası çalışacak. MessageBox.Show("Anlaşmayı kabul etmediniz."); 3. RadioButton Kullanıcının bir grup seçimden sadece bir tanesini seçmesine izin veren bir yapıdır. RadioButton ile CheckBox benzer fonksiyonlara sahiptir. Seçili olup olmadığı Checked özelliği ile kontrol edilir. Appearance özelliği ile görünümü bir buton şeklinde ayarlanabilir. CheckAlign özelliği ile işaretlenecek alan sağa veya sola alınabiliyor. RadioButton kontrolleri programlamada genellikle rb ile başlayan isimler ile isimlendirilir. Zorunlu değildir ancak programda anlaşılır olması için bir stildir. Örneğin: rbbay, rbbayan. Appearance Appearance.Normal RadioButton kontrolünün görünümünü ayarlamak için kullanılır. Appearance.Button 3 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi
CheckAlign ContentAlignment.BottomCenter ContentAlignment.BottomLeft ContentAlignment.BottomRight ContentAlignment.MiddleCenter ContentAlignment.MiddleLeft ContentAlignment.MiddleRight ContentAlignment.TopCenter ContentAlignment.TopLeft ContentAlignment.TopRight RadioButton kontrolünün işaretlenecek kutunun hizalanmasını sağlar. FlatStyle RadioButton kontrolünün flat görünümünü ayarlamak için kullanılır. FlatStyle.Flat FlatStyle.Popup FlatStyle.Standard FlatStyle.System* * System görünümü ile Standard görünüm aynı görünse de System üzerindeki resmi (üzerinde resim varsa ) gösterez, ama Standard ve diğer görünümler gösterir. RadioButton için sık kullanılan diğer bazı özellikler: Checked İşaretlenmiş olup olmadığını kontrol eder bool TextAlign ImageAlign Yazının veya resmin hizalanmasını kontrol eder ContentAlignment Text Üzerindeki yazıyı kontrol eder string RadioButton konrolünde en çok CheckedChanged eventi kullanınılır. private void radiobutton1_checkedchanged(object sender, EventArgs e) // check edilince veya check kaldırılınca burası çalışır RadioButton kontrolleri program içerisinde genellikle aşağıdaki şekilde kullanılır. Örneğin cinsiyeti ayarlamak için aşağıdaki gibi bir kod kullanılabilir. string cinsiyet; if (rbbay.checked) cinsiyet = "Bay"; else if(rbbayan.checked) cinsiyet = "Bayan"; 4 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi
Aşağıdaki örnekte tamam butonuna tıklanınca kullanıcının sevdiği sporları ve tuttuğu takımı yandaki gibi mesaj olarak ekrana verecektir. private void btntamam_click(object sender, EventArgs e) string takim = ""; if (rbgalatasaray.checked) takim = "Galatasaray"; else if (rbfenerbahce.checked) takim = "Fenerbahçe"; else if (rbbesiktas.checked) takim = "Beşiktaş"; else if (rbtrabzonspor.checked) takim = "Trabzonspor"; string sevdigi_sporlar = ""; if (chkfutbol.checked) sevdigi_sporlar = "Futbol"; if (chkbasketbol.checked) sevdigi_sporlar += ", Basketbol"; if (chkvoleybol.checked) sevdigi_sporlar += ", Voleybol"; if (chktenis.checked) sevdigi_sporlar += ", Tenis"; MessageBox.Show("Tuttuğu Takım: "+ takim + "\nsevdiği sporlar: " + sevdigi_sporlar, "Spor" ); 4. NumericUpDown NumericUpDown kontrolü aşağı ve yukarı oklarını tıklayarak değerinin azaltılıp arttırılabildiği sayısal bir tek değer alabilen bir kontroldür. Kontrolün içindeki değer Value özelliği ile okunabiliyor. Kullanıcı ayrıca içine istediği gibi değer girebiliyor. Eğer kullanıcı içine değer giremesin, sadece oklarla artırılıp azaltabilsin istiyorsanız ReadOnly özelliğini true yapmanız gerekecek. İçindeki sayının veri türü decimal tipindedir. Kontrolün içindeki nümerik görünümü DecimalPlaces, Hexadecimal veya ThousandsSeparator özelliklerini kullanarak içindeki değerin görünümünü farklılaştırabilirsiniz. Virgülden sonra basamak göstermek için DecimalPlaces özelliğini kullanıyoruz. Örneğin DecimalPlaces özelliğini 2 yaparsak virgülden sonra sadece iki basamak gösterecektir. Değerin Onaltılık tabanda görüntülenmesini istiyorsak Hexadecimal özelliğini true yapmamız gerekiyor. Girilebilecek en küçük ve en büyük değerler Minimum ve Maximum özellikleri ile kontrol ediliyor. Artış miktarı Increment özelliği ile kontrol ediliyor. NumericUpDown için en çok kullanılan event ValueChanged olayıdır. NumericUpDown kontrolleri programda anlaşılır olsun diye genellikle nm ile başlayan isimler ile isimlendirilirler. Örneğin nmyaş, nmkardeşsayisi, Aşağıda sık kullanılan özellikleri ve açıklamaları tablo şeklinde verilmiştir. 5 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi
BackColor Kontrolün arka plan rengini değiştirir Color BorderStyle Kontrollün kenar görünümünü değiştirir. BorderStyle Font Kontrolün içindeki yazının tipini kontrol eder. Font ForeColor Kontrolün içindeki yazının rengini kontrol eder. Color ReadOnly Kontrolün içindeki yazının klavye ile değiştirilmesini bool kapatır veya açar, ancak aşağı yukarı oklar ile değeri değiştirilebilir. Eğer kullanıcı değerini hiç değiştirmesin isteniyorsa Enable özelliği false yapılmalıdır. Value NumericUpDown kontrolünün içindeki sayısal değeri decimal kontrol eder. Increment NumericUpDown kontrolünün arttırma azaltma oklarına decimal tıklanıldığı zaman bir defada ne kadar artacağını veya azalacağını kontrol eder. Maximum NumericUpDown kontrolünün içindeki sayısal değerin decimal ulaşabileceği en büyük değeri kontrol eder. Minimum NumericUpDown kontrolünün içindeki sayısal değerin alabileceği en küçük değeri kontrol eder. decimal TextAlign Kontrolün içindeki yazının hizalanmasını kontrol eder. HorizontalAlignment HorizontalAlignment.Left HorizontalAlignment.Center HorizontalAlignment.Right UpDownAlign NumericUpDown Kontrolünün arttırma azaltma oklarının LeftRightAlignment yerini sağa veya sola alır. LeftRightAlignment.Left LeftRightAlignment.Right DecimalPlaces Virgülden sonraki basamak sayısını ayarlar. Örneğin virgülden sonra iki basamak alması isteniyorsa aşağıdaki gibi yapılabilir: int numericupdown1.value = 12.457m numericupdown1.decimalplaces = 2; ThousandsSeparator Her üç basamakta bir nokta ayracı koymak için kullanılır. bool numericupdown1.thousandsseparator = false; numericupdown1.thousandsseparator = true; 6 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi
Hexadecimal Kontrolün içindeki sayısal değerin 16 lık (hexal) sistemde görünmesini sağlar. Aşağıda 154 değeri için görünümler verilmiştir. bool numericupdown1.hexadecimal = false; numericupdown1.hexadecimal = true; NumericUpDown kontrolü programatik olarak kullanılmak isteneceği zaman aşağıdaki gibi kullanılailir. numericupdown1.value = 5; // başlangıç değeri 5 olacak numericupdown1.maximum = 2500; // alabileceği en büyük değer 2500 olacak numericupdown1.minimum = -100; // alabileceği en küçük değer -100 olacak numericupdown1.decimalplaces = 2; // virgülden sonra 2 basamak gösterilecek 5. DateTimePicker Kullanıcının tarih ve saat seçmek için kullanabileceği bir kontroldür. Seçilebilecek tarih saat aralığı MinDate ve MaxDate özellikleri ile sınırlandırılabiliyor. ShowUpDown özelliği ile aşağı yukarı oklar gösterilebiliyor. ShowCheckBox özelliği ile seçim kutucuğu gösterilebiliyor. Format özelliği ile tarih veya saat görünümüne geçebilir. Format özelliğinin alabileceği değerler aşağıda gösterilmiştir. DateTimePicker kontrolleri pragramda anlaşılır olması için genellikle dt ile başlayan isimler ile isimlendirilirler. Örneğin: dtdoğumtarihi, dtbaslamatarihi. Aşağıda DateTimePicker kontroleri için en çok kullanılan özellikler tablolar şeklinde verilmiştir. Format Tarih veya saat verilerini standart veya özel formatlar ile DateTimePickerFormat göstermeye yarar. DateTimePickerFormat ile beraber kullanılır. Long Short Time Custom* * Format Custom olunca yani isteğe bağlı olunca CustomFormat özelliği de atanmalıdır. Yukarıdaki Custom format için CustomFormat = "dd/mm/yyyy - ddd HH:mm" şeklinde ayarlanmıştır. ShowCheckBox DateTimePicker kontrolünün içinde bir CheckBox (seçim kutucuğu) bool nun görünmesini sağlar. datetimepicker1.showcheckbox = true; datetimepicker1.showcheckbox = false; ShowUpDown true yapılırsa DateTimePicker kontrolünün aşağıya doğru açılması yerine bool arttırma ve eksiltme için aşağı yukarı okların görünmesini sağlar. datetimepicker1.showupdown = true; 7 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi
CustomFormat Tarih ve saat için belirtilen özel formatı ayarlar. string datetimepicker1.customformat = "dd MMM yyyy ddd HH:mm"; datetimepicker1.customformat = "dd/mm/yy HH:mm:ss"; Aşağıdaki tabloda format belirteçlerinin neler olduğu ne işe yaradıkları listelenmiştir. Format Belirteci Örnekler "d" 1 den 31 e kadar ayın günleri, baştaki 0 görünmez 1/6/2009, 15/6/2009 "dd" 01 den 31 e kadar ayın günleri 01/06/2009, 15/6/2009 "ddd" Haftanın günlerini üç harfli olarak verir. 05/01/2010 Çar "dddd" Haftanın günlerini full olarak verir. 05/01/2010 Çarşamba "M" 1 den 12 ye kadar aylar, baştaki 0 görünmez 15/6/2009 "MM" 01 den 12 ye kadar aylar 15/06/2009 "MMM" Ay isimlerini üç harfli olarak yazar 05 Oca 2010 "MMMM" Ay isimlerini full yazar 05 Ocak 2010 "y" 0 dan 99 a kadar yıllar, baştaki 0 görünmez 01/01/98, 01/01/5 "yy" 00 dan 99 a kadar yıllar 01/01/98, 01/01/05 "yyy" Yılları üç basamak olarak gösterir 1/1/001, 1/1/900, 1/1/1900, 6/15/2009 "yyyy" Yılları dört basamak olarak gösterir. 1/1/0001, 1/1/0900, 1/1/1900, 6/15/2009 "h" Saatleri 12 saatlik formatta gösterir, baştaki 0 görünmez 1:45:30 AM, 11:45:30 PM "hh" Saatleri 12 saatlik formatta gösterir. 01:45:30 AM, 11:45:30 PM "H" Saatleri 24 saatlik formatta gösterir, baştaki 0 görünmez 1:45:30, 13:45:30 "HH" Saatleri 24 saatlik formatta gösterir. 01:45:30, 13:45:30 "m" 0 dan 59 a kadar dakikalar, baştaki 0 görünmez 1:9:30 "mm" 00 dan 59 a kadar dakikalar. 1:09:30 "s" 0 dan 59 a kadar saniyeler, baştaki 0 görünmez 1:45:9 "ss" 00 dan 59 a kadar saniyeler. 01:45:09 datetimepicker kontrolü programatik olarak aşağıdaki gibi kullanılabilir. datetimepicker1.mindate = new DateTime(1985, 6, 20); // alabileceği en küçük tarih datetimepicker1.maxdate = DateTime.Today; // alabileceği en büyük tarih datetimepicker1.format = DateTimePickerFormat.Custom; // Özel format // format ayarla Ocak 07, 2011 - Cuma datetimepicker1.customformat = "MMMM dd, yyyy - dddd"; // CheckBox ve yukarı-aşağı okları göster. datetimepicker1.showcheckbox = true; datetimepicker1.showupdown = true; MessageBox.Show(dateTimePicker1.Value.ToLongDateString()); // Mesajda göster 8 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi
6. PictureBox Resim dosyalarını(bitmap, metafile, icon, JPEG, GIF, veya PNG) görüntülemek için kullanılan kontrollerdir. Image özelliği ile görüntülenecek resim ayarlanabilir. Tasarım aşamasında resim kutusunun sağ üst köşesindeki ok tıklanır, açılan pencereden Choose Image seçeneği tıklanır ve resim seçilir. Kod ile ayarlanmak istenirse aşağıdaki kodu yazmak gerekecektir. picturebox1.image = Image.FromFile(@"C:\resim adresi\resim.jpg"); SizeMode özelliği ile resim kutusunun içerisindeki resmin boyutları ve görünümü aşağıdaki gibi değişkenlik gösterir. Alabileceği değerler PictureBoxSizeMode ile beraber Normal, StretchImage, Zoom, CenterImage ve AutoSize değerleridir. Normal StretchImage Zoom CenterImage AutoSize picturebox1.sizemode = PictureBoxSizeMode.Normal; picturebox1.sizemode = PictureBoxSizeMode.StretchImage; picturebox1.sizemode = PictureBoxSizeMode.Zoom; picturebox1.sizemode = PictureBoxSizeMode.CenterImage; picturebox1.sizemode = PictureBoxSizeMode.AutoSize; Bu modları teker teker deneyerek farklarını anlamaya çalışınız. BorderStyle özelliği ile resim kutusunun kenarlık özellikleri değiştirilebilir. Adres verilerek resim kutusuna aşağıdaki gibi resim yüklenebilir. picturebox1.load(@"c:\resim adresi\resim.jpg"); Bu adres internetten bir resim linki de olabilir: picturebox1.load("http://www.cicekansiklopedisi.com/wp-content/uploads/b503.jpg"); Resim kutusundaki resim kaydedilmek istenirse aşağıdaki gibi kaydedilebilir: picturebox1.image.save(@"c:\kaydetme adresi\resim.jpg"); 9 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi
7. Hata Kontrolü Program yazarken hata verebilecek kodlar try-catch blokları arasına yazılır. try // hata oluşabilecek kod catch(exception ex) // hata oluştuğunda çalışmasını istediğimiz kod Örneğin aşağıdaki kodu yazalım. picturebox1.image = Image.FromFile(@"C:\resim adresi\resim.jpg"); Peki ya belirtilen adreste bir resim dosyası yoksa ne olacak? Bu durumda program hata verecek ve çıkacak. Bunu önlemek için kodumuzu aşağıdaki gibi yazarsak program hata verse bile programdan çıkmayacak. try picturebox1.image = Image.FromFile(@"C:\resim adresi\resim.png"); catch (Exception ex) // muhtemelen belirtilen adreste dosya bulunamadı diye hata verecektir. MessageBox.Show(ex.Message); // resim bulunamadığı için resim yerini error resmi koy picturebox1.image = (Image)SystemIcons.Error.ToBitmap(); Hata verse de vermese de her ihtimalde çalışmasını istediğimiz kodları finally bloğuna yazıyoruz. // textbox1 de bpr251 olduğunu varsayalım int sayi = 0; try string str = textbox1.text.substring(3, 3); sayi = int.parse(str); catch(exception ex) // hata mesajını ilet MessageBox.Show(ex.Message); finally // sayi değişkeninin son halini bildir. MessageBox.Show(sayi.ToString()); Eğer textbox1 de 3. indexten başlayıp 3 rakam yoksa hata verecek ve catch bloğu çalışacak. Hata verse de vermese de finally bloğu çalışacaktır. 10 Bartın MYO Bilgisayar Programcılığı Öğr. Gör. Bayram AKGÜL 2012-2013 Güz Dönemi