İÇ İNDEK İLER
• WINDOWS FORM KONTROLLERİ‐1
• Pointer
• Button
• Location
• Size
• Text
• Font
• MessageBox
HEDEFLER
• Bu üniteyi çalıştıktan sonra;
• Toolbox panelinde yer alan kontrollerin çeşitlerini öğrenebilecek,
• Buton ve diğer Kontrolllerin ortak olan özelliklerini tasarım ve kod sayfasında değiştirebilecek,
• Kullanıcıya gereken bilgileri Mesaj kutusu yardımıyla iletebileceksiniz.
ÜNİTE
4
NESNE TABANLI
PROGRAMLAMA II
Okt. Mustafa AKBUĞA
Bir Windows Form
uygulamasında genellikle Label, TextBox ve Button kontrollerinden en az biri mutlaka yer
alır.
GİRİŞ
Windows uygulamalarında kullanılan düğmeler (button), listeler (listbox), metin alanları (textbox), etiketler (label) gibi nesneler birer kontroldür. (.NET) Framework’de kontroller System.Windows.Controls kütüphanesinde yer alır.
Windows Forms uygulamalarında kullanılabilen 68 tane kontrol nesnesi vardır. Bunların birçoğunun kullanım yerleri ve birtakım özellikleri genelde aynıdır.
Fakat kontrollerin bazıları diğerlerinde olmayan özellik ve olaylara sahiptir.
Bu bölümde, uygulamalarda en sık karşılaşılan kontroller gruplara ayrılarak ortak özellikleri button kontrolünün özellikleriyle birlikte anlatılacaktır.
WINDOWS FORM KONTROLLERİ‐1
ToolBox panelinde “All Windows Form” gurubu içerisinde Tablo 4.1’de listelenmiş 68 kontrol nesnesi vardır. Bunların büyük bir kısmı Windows Form projelerinde bazıları ise Wep, Silverlight ve Cloud gibi diğer proje tiplerinde kullanılır.
Tablo 4.1: Toolbox panelinde yer alan kontroller
Pointer HelpProvider ProgressBar
BackgroundWorker HScrollBar PropertyGrid BindingNavigator ImageList RadioButton
BindingSource Label RichTextBox
Button LinkLabel SaveFileDialog
CheckBox ListBox SerialPort
CheckedListBox ListView ServiceController ColorDialog MaskedTextBox SplitContainer
ComboBox MenuStrip Splitter
ContextMenuStrip MessageQueue StatusStrip DataGridView MonthCalendar TabControl
DataSet NotifyIcon TableLayoutPanel
DateTimePicker NumericUpdown TextBox DirectoyEntry OpenFileDialog Timer
DirectorySearcher PageSetupDialog ToolStripDropDownMenu
DomainUpDown Panel ToolStrip
ErrorProvider PerformanceceCounter ToolStripContainer
EventLog PictureBox ToolTip
FileSystemWatcher PrintDialog TrackBar FlowLayoutPanel PrintDocument TreeView FolderBrowserDialog PrintPreviewControl VScrollBar FontDialog PrintPreviewDialog WebBrowser
GroupBox Process
Şekil 4.1. Toolbox panelindeki en sık kullanılan kontroller
Pointer ( )
Form üzerindeki nesneleri seçmek için kullanılır. Ayrıca pointer aracı varsayılan fare aracıdır. Pointer seçili durumda iken form üzerindeki nesnelere çift tıklayarak nesnenin kaynak kodlarına gidilebilir.
Button
Windows uygulamalarında, Form üzerinde fareyle tıklanarak komut vermek için kullanılan düğmelerdir.
Bir Windows Form uygulamasında her zaman tasarım ön plandadır. Gerekli olmadıkça kontrollerin
özellikleri kodla değiştirilmez.
En çok kullanılan Kontrol Özellikleri
Şekil 4.2. Buton kontrolünün tasarımdaki parametreleri
Location: Buton kontrolünün form üzerindeki konumunu belirtir. X ve Y olmak üzere iki tane elemanı vardır. Örneğin bir butonun konumunu ayarlamak için özellikler penceresinden Location özelliğini bulup değiştirilebilir.
Fakat kod ile bunu yapmak için aşağıdaki kodaların yazılması gerekir.
Böyle bir kod tanımlandığında button1 nesnesinin X koordinatı 99, Y koordinatı 91 olacaktır. Bir başka deyişle button1 nesnesi formun solundan 99 piksel ötede olacak, formun üst tarafından ise 91 piksel aşağıda olacaktır. Bu koordinatlar böyle ayarlanabileceğimiz gibi Left ve Top ile de ayarlayabiliriz.
Bu işlem aşağıda gösterilen kodla yapılabilir.
Size: Bir kontrolün büyüklüğünü ifade eder. Bir nesnenin Size özelliği, Width ve Height olmak üzere iki elemanlıdır. Örneğin bir butonun büyüklüğünü ayarlamak için özellikler penceresinden Size özelliği bulunup değiştirilebilir.
Button kontrolü
tasarımlarda kullanılırken hem Text hemde Image
özelliği birlikte kullanılır. Arkaplana
yerleştirilen küçük resimler yazıdan daha kolay algılanır.
Fakat kod ile bu yapılmak istenirse aşağıdaki kodun yazılması gerekecektir.
Böyle bir kod tanımlandığında button1 nesnesinin genişliği 139 piksel, yüksekliği ise 92 piksel olacaktır. Kontrolün büyüklüğü; genişliği ve yüksekliği ayrı ayrı belirterek de belirlenebilir. Bunun için aşağıdaki gibi bir kod yazılmalıdır.
MinimumSize & MaximumSize: MinimumSize özelliği ile kontrolün izin vereceği en küçük yükseklik ve genişlik ayarlanır. MaximumSize ile de kontrolün izin vereceği en büyük genişlik ve yükseklikler ayarlanır. Bir nesne için bu özelliklerini ayarlamak için bu nesneleri seçip özellikler penceresinden MinimumSize ve MaximumSize özelliklerini bulup aşağıdaki gibi ayarlayabiliriz.
Kod ile yapmak istersek, bir buton için aşağıdaki gibi bir kod yazmak gerekecektir.
Text: Nesnelerin üzerindeki yazıyı kontrol eder. Üzerinde yazı olan tüm
kontrollerde geçerlidir. Bir kontrolün üzerindeki yazıyı ayarlamak için o kontrol seçilip özellikler penceresinin Text özelliğinden değiştirilebileceği gibi kod ile yapmak için aşağıdaki gibi bir kod yazmak gerekecektir.
Bir Formun font
özelliklerini değiştirmek formun
boyutlarını ve kontrollerin yerleşimini etkiler,
diğer özellikler bu değişiklikten
etkilemez.
TextAlign: Nesnelerin üzerindeki yazının hizalamasını kontrol eder. Örnek ile beraber alabileceği değerler aşağıda verilmiştir.
Alabileceği değerler ContentAlignment ile birlikte yazılır. Aşağıdaki şekiller 4.3’te TextAlign’ın alabileceği değerler ve açıklamaları görülmektedir.
Şekil 4.3. TextAlign özelliğinde yer alan seçenekler
Font: Kontrollerin üzerindeki yazı tipini, büyüklüğünü ve stilini belirler. Kontrol seçilerek o kontrolün üzerindeki yazı tipini, büyüklüğünü ve stilini değiştirmek için özellikler penceresinden Font özelliği ayarlanarak yapılmak istenen değişiklik sağlanabilir.
Kontrollerin Font
büyüklüğünü belirtmek için kesirli
sayılar da kullanılabilir.
Kod ile yapmak istenirse, bir buton için aşağıdaki gibi bir kod yazmak gerekecektir.
Dikkat edilirse Font tanımlarken üç tane parametre belirtilmiştir. Bunlardan ilki fontun aile ismini, ikincisi fontun büyüklüğünü, üçüncüsü ise fontun stilini belirler.
ForeColor: Kontrolün yazı rengini belirler. Kontrol seçildikten sonra özellikler penceresinden kontrolün üzerindeki yazının rengi ayarlanabilir. Kod ile ayarlamak gerekirse, örneğin bir butonun üzerindeki yazı rengini ayarlamak için aşağıdaki gibi bir kod yazmak gerekecektir.
Renk oluşturmak için Color ile çıkan ve önceden tanımlanmış renkler kullanılabildiği gibi kendimiz de RGB renk kodlarını belirterek renk oluşturabiliriz.
Bunun için Color. FromArgb fonksiyonu kullanılır. Bu metot üç parametre alır. Bu parametreler RGB (red, green, blue) ‐> (Kırmızı, Yeşil, Mavi ) renklerinin
tonlarından oluşur.
Bunların yanında bir de sistemde Windows stilleri için tanımlanmış SystemColors sınıfı vardır. ForeColor için bunlar da kullanılabilir.
BackColor: Kontrollerin arka plan rengini belirler. Kontrol seçildikten sonra özellikler penceresinden kontrolün arka plan rengi ayarlanabilir.
Kod ile ayarlamak gerekirse, bir butonun arka plan rengini ayarlamak için aşağıdaki gibi bir kod yazmak gerekecektir.
Windows stilleri için tanımlanmış SystemColors sınıfı BackColor için aşağıdaki gibi kullanılabilir.
TabStop: TAB tuşuna basılınca kontrolün odaklanıp odaklanmamasına karar verir.
TAB tuşu ile kontroller arasında gezerken durmasını istediğimiz kontroller için true, istemediklerimiz için false yaparız. Kod ile yazacak olursak bir buton için aşağıdaki kodu yazmamız gerekecektir.
Kontrollerin Cursor özellikleri programın
işleyişine göre seçilmelidir. Bilgi
giriş ekranında bekleme sembolü seçmek kullanıcıyı
yanıltabilir.
TabIndex: TAB tuşuna basılınca kontroller arasında dolaşma sırasını odaklama sırası belirler. Örneğin Şekil 4.4’te kullanıcı adı için bir alan, şifre için bir alan, tamam için de bir buton olduğunu varsayalım. Bunun için özellikler
penceresinden sırasıyla kontrolleri ayrı ayrı seçip kullanıcı adı için ayrılmış metin kutusunun tab sırasını 1, şifre için olan metin kutusunun tab sırasını 2, Giriş için olan butonun tab sırasını 3, Çıkış için olan butonun da tab sırasını 4 yaparak tab sıralarını ayarlayabiliriz. Bu işlemleri kod ile yapacak olursak aşağıdaki gibi bir kod yazmamız gerekecektir.
Şekil 4.4. Kontrol nesnelerinin TabIndex özelliğini ayarlanması
Cursor: Kontrollerin üzerine Mouse ile gelindiğinde kursörün değişmesini kontrol eder. Sistemde varsayılan olarak tanımlanan Kursörlerden kullanabileceğimiz gibi kendimiz de dosyadan kursör oluşturabiliriz. Cursor ile çıkabilecek kursörler aşağıda şekilleri ile beraber verilmiştir
.
Bir buton için kursörü kod ile ayarlamak istersek aşağıdaki gibi bir kod yazmamız gerekecektir. Kursörü hazır kursörlerden kullanabileceğimiz gibi bir kursör dosyasından da alabiliriz. Aşağıdaki ikinci satırdaki kod bir kursör dosyasından kursör yapmayı gösterir.
Anchor: Formun boyutları değiştiğinde, form üzerinde her şartta görüntülenmesi gereken kontrollerin Anchor özelliği ile ayarlanır. Örneğin formun sağ alt tarafına koyulan bir butonun, formun büyütülüp küçültülmesi durumunda da sürekli olarak altta sağda durması sağlanabilir.
Hangi tarafa veya taraflara kilitleyeceğimizi AnchorStyles ile beraber kullanıyoruz. Eğer bir kontrolün Anchor özelliğini özellikler penceresinden ayarlamak istersek özellikler penceresinden Anchor un alabileceği değerler için aşağıdaki şekil açılacaktır.
Fakat kod ile yazacak olursak Anchor özelliğinin alabileceği değerler aşağıdaki gibi olacaktır.
kullanılabilir. Bu durumda alabilecek değerler arasına dik‐çizgi | koyulur.
Dock: Nesneyi içinde bulunduğu kontrolün belirli bir kenarını veya tamamını dolduracak şekilde kaplamasını sağlar.
Örneğin butonun formun alt tarafını doldurması isteniyorsa aşağıdaki gibi bir kod yazılmalıdır.
Dock özelliğinin alabileceği değerler DockStyle ile beraber kullanılır. Aşağıda alabileceği değerler listelenmiştir. Eğer özellikler penceresinden bu özellik
ayarlanacaksa aşağıdaki gibi bir şekil açılacaktır.
Alabildiği değerler aşağıda gösterilmiştir.
MessageBox
Kullanıcıya mesaj vermek için Show metodu ile beraber kullanılır. Eğer mesaj verilip mesajın durumuna göre Evet, Hayır, Tamam ve İptal gibi butonlardan birine tıklanınca hangisine tıklandığı bilinmek isteniyorsa geri dönüş değeri olan
DialogResult özelliğinden yararlanılır.
Sık kullanılan Mesaj fonksiyonları şekil 4.5’te gösterilmiştir.
Windows Form Uygulamalarında kullanıcıyı program içinde yönlendirmek
için genelde Label etiketi kullanılır.
Fakat kullanıcı hatalı işlemler yapmaya başlarsa verilecek bilginin önemine göre MessageBox fonkiyonları devreye
girer.
Şekil 4.5. MessajBox ‘ın kullanım formatları
Şekil 4.6. MessajBox nesnesinde yer alan parametreler
1. Mesaj Başlığı: istediğiniz bir başlık yazısı yazabilirsiniz.
2. MessageBoxIcons: Mesaj kutusunda görüntülenecek konuyla ilgili ikonu kontrol eder.
Alabildiği Değerler:
Error Hand Stop
Question
Exclamation Warning
Information Asteriskdöndürür.
Geri Dönebilecek Değerler:
OK: Kullanıcı “Tamam” butonuna tıklamıştır.
Cancel: Kullanıcı “İptal” butonuna tıklamıştır.
Abort: Kullanıcı “Durdur” butonuna tıklamıştır.
Retry: Kullanıcı “Yeniden Dene” butonuna tıklamıştır.
Ignore: Kullanıcı “Yoksay” butonuna tıklamıştır.
Yes: Kullanıcı “Evet” butonuna tıklamıştır.
No: Kullanıcı “Hayır” butonuna tıklamıştır.
Kullanıcı yukarıdaki geri dönüş değerlerine göre istediği bir işlemi yapabilir.
5. Mesaj butonları: Mesajın altında görüntülenecek butonları kontrol eder.
Alabildiği Değerler:
OK: Tamam butonu
OKCancel: Tamam, İptal butonları
AbortRetryIgnore: Durdur, Yeniden Dene, Yoksay butonları
YesNoCancel: Evet, Hayır, İptal butonları
YesNo: Evet, Hayır butonları
RetryCancel: Yeniden Dene, İptal butonları
Örnek Uygulama: Bu örnekte tasarım alanına iki adet buton, birer adet label ve textbox eklensin. Form ilk ekrana geldiğinde kullanıcı adı istensin. Program çalıştığında textbox içerisinde kullanıcı adı girilerek Kaydet butonuna basıldığında
“Bilgiler kaydedildi” mesajı versin. Çıkış butonuna basıldığında ise “Henüz kaydedilmemiş bilgileriniz var, çıkmak istediğinize emin misiniz?” Mesajı vererek kullanıcıyı uyarsın. Kullanıcı Mesaja “Evet” butonuna basarak cevap verildiğinde programdan çıksın. “Hayır” butonuna basıldığında ise programa geri dönsün.
Adım 1: Örnek uygulama projesi için başlat menüsündan Visual Studio 2013 simgesine tıklayarak Studio.NET yazılımını başlatın.
Adım 2: Açılan Form’u Toolbox ve properties panellerini kullanarak Şekil 4.7’de gösterildiği gibi tasarlayın.
Adım 3: button1‐“kaydet” ve button2‐ “Çıkış” butonlarının Click olaylarını Tasarım ekranındayken oluşturarak gerekli olan kodları Şekil 4.8’de gösterildiği gibi
kodlayın.
Adım 4: Örnek uygulamayı F5 veya kısayol çubuğu üzerinden Start butonuna tıklayarak çalıştırın(Şekil 4.9).
Tasarım Ekranı:
Şekil 4.7. Örnek uygulamaya ait tasarım ekranları
Şekil 4.8. Örnek uygulamaya ait kod ekranı
Şekil 4.9. Uygulama çalıştırılıp “Kaydet” butonuna basılması sonucu ortaya çıkan ekran görüntüsü
Şekil 4.10. “Çıkış” butonuna basılması sonucu ortaya çıkan ekran görüntüsü
Örnek Uygulamanın açıklanması:
Şekil 4.8‘de gösterilen C# kodları incelendiğinde 1 den 15 kadar ve 36.
satırlardaki kodların Form uygulamasının tasarım kodları olduğu görülecektir.
16 ile 20 arasındaki satırlar Button1_Click(Kaydet) olayına tanımlanmış ve Şekil 4.9’daki Bilgilendirme mesajı veren kodlardan oluşturulmuştur.
21 ile 35 arasındaki kodlar Button2_Click(Çıkış) olayının tanımlanması sonucu oluşmuştur. TextBox1 in içeriğine kullanıcı bir şeyler yazmamış ise programdan hemen çıkacaktır. Eğer textBox1’in içeriği doluysa Şekil 4.10’da gösterilen “Dikkat” başlıklı Mesajı ekranda gösterilecektir. Kullanıcı bu mesaja
“Hayır” cevabı verirse uygulama forma geri döner. “Evet” cevabı verirse form kapatılarak programdan çıkılacaktır.
Öz et
•Windows uygulamalarında kullanılan düğmeler , listeler , metin alanları ve etiketler gibi nesneler birer kontroldür.
•Pointer aracı; Form üzerindeki nesneleri seçmek için kullanılır. Pointer seçili durumda iken form üzerindeki nesnelere çift tıklayarak nesnenin kaynak kodlarına gidilebilir.
•Button kontrolü; Windows uygulamalarında, Form üzerinde fareyle tıklanarak komut vermek için kullanılan düğmelerdir.
•Location kontrolünün form üzerindeki konumunu belirtir.
•Size kontrolün büyüklüğünü ifade eder.
•MinimumSize özelliği ile kontrolün izin vereceği en küçük yükseklik ve genişlik ayarlanabilir.
•MaximumSize ile de kontrolün izin vereceği en büyük genişlik ve yükseklikler ayarlanabilir.
•Text: Nesnelerin üzerindeki yazıyı kontrol eder. Üzerinde yazı olan tüm kontrollerde geçerlidir.
•TextAlign: Nesnelerin üzerindeki yazının hizalamasını kontrol eder.
•Font: Kontrollerin üzerindeki yazı tipini, büyüklüğünü ve stilini belirler.
Kontrol seçilerek o kontrolün üzerindeki yazı tipini, büyüklüğünü ve stilini değiştirmek için özellikler penceresinden Font özelliği ayarlanarak yapılmak istenen değişiklik sağlanabilir.
•ForeColor: Kontrolün yazı rengini belirler. Kontrol seçildikten sonra özellikler penceresinden kontrolün üzerindeki yazının rengi ayarlanabilir.
•BackColor: Kontrollerin arka plan rengini belirler. Kontrol seçildikten sonra özellikler penceresinden kontrolün arka plan rengi ayarlanabilir.
•TabStop: TAB tuşuna basılınca kontrolün odaklanıp odaklanmamasına karar verir. TAB tuşu ile kontroller arasında gezerken durması istenen kontroller için true, istenmeyenler için false yapılmalıdır.
•TabIndex: TAB tuşuna basılınca kontroller arasında dolaşma sırasını belirler.
•Cursor: Kontrollerin üzerinde Mouse ile gelindiğinde kursörün değişmesini kontrol eder.
•Anchor: Formun boyutları değiştiğinde ,form üzerinde her şartta
görüntülenmesi gereken kontroller bu özellik sayesinde ayarlanır. Örneğin formun sağ alt tarafına koyduğumuz bir butonun, formun büyütülüp küçültülmesi durumunda da sürekli olarak altta sağda durmasını isteyebiliriz.
•Dock: Nesneyi içinde bulunduğu kontrolün belirli bir kenarını veya tamamını dolduracak şekilde kaplamasını sağlar.
•MessageBox, Kullanıcıya mesaj vermek için Show metodu ile beraber kullanılır. Eğer mesaj verilip mesajın durumuna göre Evet, Hayır ve İptal gibi butonlardan birine tıklanırsa hangisine tıklandığı öğrenmek için geri dönüş değeri olan DialogResult özelliğinden yararlanılır.
sorularını sistemde ilgili ünite başlığı altında yer
alan “Bölüm Sonu Testi” bölümünde etkileşimli olarak cevaplayabilirsiniz.
button1.Left=139;
button1.Top = 92;
b) TextBox c) Label d) Form e) Pointer
2. Windows uygulamalarında form üzerinde fareyle tıklanarak komut vermek amacıyla kullanılan kontrol aşağıdakilerden hangisidir?
a) Label b) TextBox c) ListBox d) Button e) ComboBox
3. Kontrollerin büyüklüğünü ifade etmek için kullanılan aşağıdakilerden hangisidir?
a) Location b) Text c) TextAlign d) Font e) Size
4.
Yukarıda verilen kod içerisindeki değerler hangi özellik için parametre olarak verilebilir?
a) Location b) Size
c) MinimumSize d) MaximumSize e) TabIndex
5. Kontrollerin arka plan rengini belirleyen seçenek aşağıdakilerden hangisidir?
a) BackColor b) ForeColor c) Font d) TextAlign e) MinimumSize
6. Formun boyutları değiştiğinde, form üzerinde her şartta görüntülenmesi gereken kontroller hangi özellikleri kullanılarak ayarlanır?
a) Size b) Location c) TabIndex d) TabStop e) Anchor
7. Mesaj altında görüntülenecek butonlar hangi değerleri alamaz?
a) OK b) OKCancel c) YesNo d) RetryCancel e) Break
8. Aşağıdakilerden hangisi mesaj ikon ismi değildir?
a) Eror Hand Stop b) Question
c) Exclamation Warning d) Stop
e) IInfromation Asterisk
9. Seçeneklerden hangisi bir MesajBox nesnesinde yer almaz?
a) Mesaj başlığı b) Mesaj İkonu c) Mesaj yazısı d) Mesaj rengi
e) MessageBox butonları
b) Size c) Location d) TextAligh e) Dock
Cevap Anahtarı
YARARLANILAN KAYNAKLAR
AKBUĞA. Mustafa, (2011), Atatürk Üniversitesi, Uzaktan Eğitim Merkezi, Nesne Tabanlı programa‐I Ders Notları
ALGAN, Sefer, (2010), Her Yönüyle C#, İstanbul: Pusula Yayıncılık, AKTAŞ, Volkan, (2013), Her Yönüyle C# 5.0, İstanbul KODLAB,
CLARK, Dan, (2013), Your visual blueprint for building.NET application, 2nd Edition, New York Hungry Minds,
SCHILDT, Herbert, (2002), The Complete Reference C#, çev. Duygu Arbatlı Yağcı, İstanbul Alfa Basım Yayım Dağıtım,
YANIK, Memik, (2004), Microsoft Visual c#.NET, 1.Baskı, Seçkin Yayıncılık, Ankara.
AYRILMAZ, Emre(2008), C# 3.0 ile Programlama Temelleri, Bilge Adam Yayınları, İstanbul.
https://bilisimedia.wordpress.com [Erişim tarihi: 01 Ocak 2014]
http://www.nesnetabanliprogramlama.com [Erişim tarihi: 12 Aralık 2014]
http://myo.bartin.edu.tr [Erişim tarihi: 09 Aralık 2014]
http://siberakademi.net [Erişim tarihi: 10 Ocak 2014]