0% found this document useful (0 votes)
10 views257 pages

ADO2 X

Uploaded by

mustafa507607
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views257 pages

ADO2 X

Uploaded by

mustafa507607
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

SqlCommand

Uygulama ile SQL Server arasında sql komut cümlelerinin, saklı yordam (stored procedure)
isimlerinin, gerekli parametre isimleri ve değerlerinin taşınmasını sağlayan sınıftır. Taşıdığı
sql komut cümlesini ya da çağıracağı saklı yordamın ismini, SQL Server tarafında yürütme ve
çıkan sonuçları ya da etkilenen kayıt sayısını geriye gönderme özelliklerine de sahiptir.
SqlCommand sınıfının en sık kullanılan özellik ve metodları aşağıda kısaca incelenmektedir.

CommandText Parametreli ya da parametresiz sql cümlelerinin, parametre bekleyen ya da


beklemeyen saklı yordam isimlerinin atanabileceği özelliktir.

CommandType CommandText özelliğinde belirtilen string ifadenin, saklı yordam olarak mı


yoksa, Text ifade olarak mı değerlendirileceğini belirten özelliktir.

Varsayılan olarak Text değerine sahiptir. Ancak saklı yordam (stored


procedure) olarak kullanılacaksa; özellikle belirtilmesi gerekmektedir.

Connection SqlCommand nesnesinin içerdiği sorguların hangi sunucu ve veritabanında


çalıştırılması gerektiği ile ilgili bağlantı nesnesini tutan özelliktir.

ExecuteNonQuery() Yazılan sql cümlesi ya da SQL Server tarafındaki saklı yordamın (strored
procedure) çalıştırılması ve bu işlem ya da işlemler sonucunda etkilenen
kayıt sayısının geriye alınabilmesini sağlayan metottur.

Ancak burada dikkat edilmesi gereken nokta; geriye sadece tamsayı tipinde
bir değer dönmesidir. Bu nedenle, genellikle veritabanına değer
gönderirken yani, insert, update ve delete işlemleri için kullanılır.
Sonrasında da bu işlemlerden etkilenen kayıt sayısı geriye alınmaktadır.
Böylece örneğin güncellenen satır sayısı elde edilip kullanılabilir.

ExecuteScalar() ExecuteNonQuery metodu gibi, yazılan sql cümleleri veya saklı yordamları
çalıştırmak için kullanılır. Bu metodun farklı olduğu nokta ise; geriye sadece
tek bir object tipinde sonuç dönen sorgular için kullanılmasıdır.

Bu metotla, select işleminden dönecek olan scalar kayıtlar alınabilmektedir.


Örneğin gruplama fonksiyonları içeren sorgu cümlelerinin sonuçlarını elde
etmekte kullanılabilir.

ExecuteXmlReader() Sadece SqlCommand sınıfında (class) bulunan bu metot; SQL Server


üzerinden gelen verinin, XML (eXtensible Markup Language) formatında
alınabilmesini sağlar.

ExecuteReader() Geriye veri ya da veri blokları dönen sql cümleleri veya saklı yordamları
çalıştıran ve bunların sonuçlarının uygulama tarafına alınabilmesini sağlayan
metottur.

Bu metot ile uygulama tarafına gelecek sonuçlar, DataReader adı verilen ve


veri sağlayıcıya (data provider) göre değişen bir tip yardımıyla
okunabilmektedir. Özellikle içeriği çok fazla değişmeyen ve az sayıda satır
içeren veri kümelerinin uygulama ortamına daha hızlı bir şekilde
alınabilmesini sağlayan modellerde tercih edilmektedir.

Sayfa 1 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

DBCOMMAND NESNESİNİN YÜRÜTÜLMESİ

EXECUTENONQUERY

İnsert, update ve delete gibi geriye herhangi bir değer döndürmeyen (kayıt olarak) işlemler
için kullanılır. Bu işlem geriye kaç kaydın etkilendiğini gösteren int türünde değer döndürür.

Örnek: MuşteriId sütunu 3 olan satırın adsoyad sütunu “Fatma Güneş” olarak güncellensin.

Imports [Link]

Public Class Form1


Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New SqlConnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "update musteri set adsoyad='Halil Güneş' where
MusteriId=3"
Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
Dim kayitsayisi As Integer = [Link]
[Link]()
If kayitsayisi > 0 Then
MsgBox([Link] & " kayıt güncellendi.")
Else
MsgBox("Güncelleme başarısız oldu")

Sayfa 2 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
End If
End Sub

End Class

EXECUTESCALAR()
Tek alanlı değer döndüren sorgular için tercih edilir. Geriye object türünde değer döndürür.
Örneğin grupsal fonksiyonların sonuçları için bu yordam tercih edilebilir.

Örnek: müşteri tablosunda kaç kaydın olduğu sorgulayalım

Imports [Link]

Public Class Form1


Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New SqlConnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "select count(*) from musteri"
Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
Dim kayitsayisi As Integer = CInt([Link]())
[Link]()

MsgBox(" tabloda " & [Link] & " kayıt bulunuyor.")

End Sub

End Class

EXECUTEXMLREADER
Veritabanı sunucusundan çekilmiş XML formatındaki içeriği [Link] sınıfı
türündeki bir değişkene aktarır. XmlReader sınıfı XML formatındaki veriyi ileri yönlü hızlı
bir şekilde okumak için kullanılır. SQL sunucu tarafında veriyi XML formatında döndürmek
için “FOR XML” ifadesi kullanılır.

Örnek:

Veri tabanından verileri XML formatında alıp listbox’ta listeleyelim.

Sayfa 3 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Imports [Link]
Public Class Form1
Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New sqlconnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "select MusteriId,adsoyad from musteri for xml
auto,xmldata"
Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
Dim oxm As [Link] = [Link]
Dim ods As New DataSet
[Link](oxm, [Link])
[Link]()
[Link]()

[Link]("Müşteri İd" & Chr(9) & Chr(9) & "AdSoyad")

[Link]("_____________" & Chr(9) & "_____________")


For Each odr As DataRow In [Link](0).Rows
[Link](odr("MusteriId") & Chr(9) & Chr(9) & odr("adsoyad"))
Next

End Sub
End Class

For each döngüsü yerine for next döngüsünü kullanmak istersek aşağıdaki kodları yazabiliriz.

Dim odr As DataRow

Sayfa 4 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

For i As Integer = 0 To 2
odr = [Link](0).Rows(i)
[Link](odr("MusteriId") & Chr(9) & Chr(9) & odr("adsoyad"))
Next

Veya count fonksiyonu ile önce kayıt sayısını hesaplayabiliriz.

Imports [Link]
Public Class Form1
Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New SqlConnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "select count(*) from musteri"
Dim ocmd2 As New SqlCommand(sql, ocnn)
[Link]()
Dim kayitsayisi As Integer = CInt([Link]())
[Link]()

MsgBox(" tabloda " & [Link] & " kayıt bulunuyor.")

sql = "select MusteriId,adsoyad from musteri for xml auto,xmldata"


Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
Dim oxm As [Link] = [Link]
Dim ods As New DataSet
[Link](oxm, [Link])
[Link]()
[Link]()

[Link]("Müşteri İd" & Chr(9) & "AdSoyad")

[Link]("_____________" & Chr(9) & "_____________")


Dim odr As DataRow

For i As Integer = 0 To kayitsayisi - 1

odr = [Link](0).Rows(i)
[Link](odr("MusteriId") & Chr(9) & Chr(9) & odr("adsoyad"))
Next

End Sub
End Class

DbDataReader Nesnesi

DataReader herhangi bir anda sadece bir satırlık kayda erişim imkanı veren, yalnızca
okunabilir (read only) ve yalnızda ileri yönlü (forward only) erişimi destekleyen bir yapı

Sayfa 5 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

sunar. Bu özellikleri ile sadece okuma ve listeleme amaçlı küçük veri setleri üzerinde
kullanılması tavsiye edilmektedir. Veriler serverin belleğinde tutulur. Bu nedenle büyük veri
kümeleri üzerinde DataReader ile çalışmak performans açısından olumsuz sonuç doğurur

DataReader ile bilgileri okurken veritabanı bağlantımızın sürekli açık kalır. DataReader ile
işimiz bittiğinde derhal DataReader i ve Connection'ı kapatmalıyız.

Aşağıda DataReader ile veritabanından veri okuma ile ilgili şekil durumu özetlemektedir.

Veritabanı connection command DataReader

Sorgu, yürütüldüğü zaman veri kaynağı tarafındaki ilk satır DataReader nesnesine gönderilir.
Bu arada sonraki kaydın okunması ve taşınması amacıyla bağlantı açık kalır. DataReader
nesnesini döngüye sokarak, her defasında bir adım ilerlemesini sağlarız.

DataReader nesnesi veritabanı türlerine göre hazırlanmış isim uzaylarında bulunur. En çok
kullanılan DataReader türleri şunlardır.

 [Link]
 [Link]
 [Link]
 [Link]

DataReader içindeki kayıtları okumak için, Get ile başlayan sütun seçici yordamlar
kullanılabildiği gibi, sütun indisi veya adı kullanılabilir.

‘sütuna ait indis


[Link](oRdr(1))
‘sütunun adı ile
[Link](oRdr(“adsoyad”))
‘getvalue ile
[Link]([Link](1))
‘string türünde değer döndüren getstring ile
[Link]([Link](1))

Veritabanındaki bir sonraki kaydı DataReader nesnesine aktarmak için nesnenin Read
yordamı kullanılır. Bu yordam false değer döndürürse okunacak kaydın olmadığı anlamına
gelir. DataReader kayıtlarını listelemek için bu yordam aracılığıyla döngü kurulur. Yordam
True değerini döndürdüğü sürece döngüye girilir.

Sayfa 6 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

örnek

Imports [Link]
Public Class Form1
Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New sqlconnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "select * from musteri"
Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
'datareader nesnesin tanımlayalım
Dim ordr As SqlDataReader = [Link]

While [Link]
[Link](ordr("adsoyad"))
End While
[Link]()

[Link]()

End Sub
End Class

Sayfa 7 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Imports System
Imports [Link]
Public Class Form1

Dim cnnstr As String =


"server=(localdb)\MSSQLLocalDB;database=deneme325;integrated security=true;"

Dim ocnn As New SqlConnection(cnnstr)

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles


[Link]

Dim sql As String = "select * from musteri"


Dim ocmd As New SqlCommand(Sql, ocnn)
[Link]()
'datareader nesnesin tanımlayalım
Dim ordr As SqlDataReader = [Link]

While [Link]
[Link](ordr("adsoyad"))
End While
[Link]()

[Link]()

End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles [Link]

End Sub
End Class

Sayfa 8 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Veri ve Veriye Erişim

Birçok uygulama bazı bilgileri geçici olarak tutup, daha sonra o bilgileri kullanarak işlemler
yapar. Ancak bu bilgiler sadece uygulama çalıştığı sürece erişilebilir durumdadır. Çünkü;
bellek, uygulama çalışırken bilgileri geçici olarak tutmak için kullanılır. Bu şekilde çalışan
uygulamalara hesap makinası örnek olarak verilebilir. Yani kullanıcıdan birkaç veri alıp
bunları hemen işleyen ve bu bilgilerin daha sonra kullanılması gerekmediği için geçici olarak
tutulmasında sakınca olmayan uygulamalardır.

Ancak her uygulama bu şekilde geliştirilemez. Çünkü alınan bilgilere uygulama kapatıldıktan
sonra da erişilmesi gerekebilir. Bu durumda bilgileri bellek dışında, veriyi kalıcı olarak
tutabilecek bir ortama, örneğin; disklere kaydetmek gerekecektir. İşte bu ihtiyacı karşılamak
için farklı yöntemler geliştirilmiş ve günümüzde çok büyük miktarlarda veri tutan sistemler
tasarlanmıştır.

Kısaca bu gelişime bakacak olursak; ilk olarak, günümüzde de halen çok sık kullanılan veri
tutulabilecek belki de en basit yapısal olmayan sistemin “text dosya” olduğu söylenebilir.
Ancak, bu yapılar da zamanla yetersiz kalmış ve yapısal fakat hiyerarşik olmayan çözümler
geliştirilmiştir. Comma Separated Value (CSV) dosyalar bunlara örnek olarak verilebilir.

Zamanla, sadece veriyi tutmuş olmak da yetersiz kalmış ve verileri hiyerarşik bir yapıda
tutma gereksinimi doğmuştur. Bu yapıya da verilecek en güzel örnek XML teknolojisidir. Bu
yapının da yetersiz kaldığı durumlar için ilişkisel (Relational) veri depolama sistemleri
geliştirilmiştir.

İlişkisel veri depolama modeli günümüzde yoğun olarak kullanılmaktadır. Bu modelle


saklanan verileri yönetmek için geliştirilen uygulamalara da ilişkisel veritabanı yönetim
sistemi (Relational Database Management System, RDBMS) adı verilmektedir.

Böylece veritabanını (Database), veriyi daha sonra kullanılabilmesi ya da sadece


depolanması amacıyla belli bir formatta tutan sistem olarak açıklayabiliriz.

Günümüzde büyük miktarlardaki verileri depolamak için ve bunları yönetmek için çeşitli
firmaların geliştirmiş olduğu uygulamalar vardır. Bu uygulamalara örnek olarak Microsoft
SQL Server, Oracle, MySQL (MariaDB) ve Microsoft Access verilebilir.

Veri Kaynağı (Data Source)

Veri içeren herhangi bir dosya bir veri kaynağı olarak kabul edilir. Bir veri kaynağı (bazen bir
veri dosyası olarak adlandırılır), verinin alındığı yer. Kaynak, herhangi bir dosya formatındaki
her türlü veri olabilir.

Veriye Erişim Teknolojileri

ODBC (Open Database Connectivity)

Microsoft ve diğer kuruluşların geliştirdiği bu teknoloji ile birçok veri kaynağına bağlanarak,
veri alışverişi yapılabilmektedir. ODBC uygulama ortamlarına bir API (Application
Programming Interface ) sunmakta ve uygulamaların farklı sistemlere bağlanılabilmesini

Sayfa 1 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

sağlamaktadır. ODBC teknolojisi 1990 öncesi geliştirilmiş olmasına rağmen [Link]


platformunda da yer alan bir teknolojidir. ODBC hem yerel (local) hem de uzaktaki (Remote)
veri kaynaklarına erişmek için kullanılabilecek bir veri erişim teknolojisidir.

DAO (Data Access Objects)

DAO, ODBC’nin alt seviye diller için (C,C++) geliştirilmiş olması ve kullanımının zor
olması nedeniyle, Microsoft tarafından Visual Basic 3 ile geliştirilmiş ve kullanımı çok kolay
bir teknolojidir. Microsoft’un, Microsoft Access veritabanlarına erişim standardı olan Jet için
geliştirdiği bu model, halen VB6’dan MS Access’e erişim için en hızlı yöntemdir.

RDO (Remote Data Objects)

Microsoft’un Visual Basic 4 ile duyurduğu RDO, DAO’nun ODBC sağlayıcısındaki


eksikliğini gidermek için geliştirilmiştir. Uzak veri kaynaklarına erişimde ODBC’nin daha
performanslı kullanılmasını sağlar.

OLE DB (Object Linking and Embedding DataBase)

ODBC’de olduğu gibi driver (sürücü) mantığıyla çalışan OLE DB, arka tarafta COM
arayüzünü kullanan bir tekniktir. Kaydettiği gelişme ile birçok sisteme bağlantı için
kullanılabilmektedir. Bu başarısından dolayı da [Link] içerisinde önemli bir yeri vardır.

ADO (ActiveX Data Objects)

ADO aslında arka planda OLE DB teknolojisini kullanan ve veriye erişimi daha da
kolaylaştıran, yüksek seviye programlama dilleri için veri erişiminde tercih edilen bir
teknolojidir. ADO, [Link]’e temel oluşturduğu söylenen bir teknoloji olmasına rağmen bu
tam olarak doğru değildir. Bunun en büyük nedenlerinden birisi de ADO’nun COM desteğine
gereksinim duymasıdır. Günümüzde bazı platformlarda halen kullanılan bu teknoloji, XML
standardına destek vermek için eklentilerle güçlendirilmesine rağmen, XML formatındaki
veriyi sadece taşıyabilmektedir. Aksine, [Link], XML standardı üzerine kurulmuş ve
veriyi taşırken de XML formatını kulllanan bir teknoloji olarak geliştirilmiştir.

[Link]

[Link], veri kaynağındaki (Veritabanı, metin, XML Dosyaları vb.) verilere erişmek veya
bu verileri değiştirmek için geliştirilmiş bir veri erişim teknolojisidir. [Link] teknolojisi
ile Access, MSSQL ve Oracle gibi farklı veritabanlarına erişmek ve bu veritabanları üzerinde
okuma, yazma, güncelleme ve silme gibi işlemler kolaylıkla gerçekleştirilebilmektedir.
Ayrıca veri kaynağına sunmuş olduğu farklı erişim yöntemleri ile performans, güvenlik ve
güncel veri gibi kriterlere göre programcının ihtiyaca göre farklı alternatifler kullanmasına
olanak tanır. Örneğin kaynakların sınırlı olduğu mobil uygulamalarda masaüstü
uygulamalarına göre veri kaynağına erişim için farklı yöntemler kullanır.

[Link], Microsoft’un .NET platformunda çok önemli bir yere sahip, .NET
uygulamalarından, her türlü veri kaynağına erişim için gerekli hazır tipleri olan, COM desteği
gerektirmeyen, XML standardı üzerine kurulmuş ve en önemlisi de .NET Framework’ün
imkanlarını kullanabilen, ADO’nun gelişmiş bir versiyonu olmaktan çok, yeni bir teknoloji
olarak karşımıza çıkmaktadır.

Sayfa 2 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

[Link], .NET Framework’ ün bir parçası olarak 1.0’dan itibaren, .NET’in tüm
versiyonlarında yer almaktadır. Ayrıca veri işlemlerini çok kolaylaştıran ve nesneye yönelik
programlama (Object Oriented Programming) modeline uygun yapısı nedeniyle son derece
kullanışlı bir platformdur.

[Link] modelinin diğer veri erişim modellerine göre üstünlüklerini şöyle sıralayabiliriz:

 [Link], veritabanından çekilen verilerin kopyasını XML formatını kullanarak


belleğe aktarır.

 Uygulamanın kullanıcı sayısı arttıkça kaynak kullanımı da artmaktadır. N-Katmanlı


(N-tier) uygulama yapısı kullanılarak, uygulamaların katmanlar üzerinden dağıtılması
sağlanır. Böylece uygulamaların ölçeklenirliği artar.

 [Link] ile bağlantısız veri ortamları için uygulama geliştirilebilir.

 [Link] gelişmiş XML desteği verir.

Sayfa 3 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

[Link] Mimarisi

[Link], .NET platformunda çok önemli bir noktada yer almaktadır. Bunu aşağıdaki
şekilde görebilmekteyiz.

[Link]’in .NET Framework içindeki yeri

Şekilde de görüldüğü gibi [Link], .NET Framework’ün merkezinde ve birçok platformda


kullanılan ortak bir katmandır. O nedenle .NET ile geliştirilen tüm uygulamalar, veri
kaynaklarına erişim için [Link] tiplerinden yararlanmaktadır. Bu da uygulama
geliştiriciler için çok büyük bir avantaj sağlamaktadır. Çünkü [Link] platformu da, .NET
Class Library üzerinde çalışmakta ve bu sayede .NET Framework içinde yazılmış olan bir çok
tipi kullanabilmektedir. Bu tipler aracılığıyla, farklı veri kaynaklarına bağlanmak, verileri
alıp, alınan verileri uygulamalarda kullanmak, yeni veriler eklemek ve mevcut verileri
güncellemek çok kolay bir hal almaktadır.

Veri Sağlayıcıları (Data Provider)

[Link] ile, çok farklı veritabanı ve veritabanı yönetim sistemleri kullanılabilmektedir.


Böyle bir durumda farklı sistemlerle haberleşebilmek ve her biriyle en doğru, en performanslı
şekilde çalışabilmek için farklı gereksinimler ortaya çıkmaktadır. Çünkü her sistemin kendi
standartları ve desteklediği farklı standartlar vardır. İşte bu durumu göz önüne alarak .NET
geliştiricileri, farklı standartları destekleyen tipler yazmışlar ve bunları [Link]
kütüphanesinde ayrı ayrı isim alanları (Namespace) içerisine yerleştirmişlerdir. Bu isim
alanlarından, SQL Server’a bağlantı kurmak için yazılmış tipleri bulunduran isim alanına Sql
Server Veri Sağlayıcısı (Sql Server .NET Data Provider), Oracle için olan isim alanına
Oracle Data Provider, OleDb standartlarını destekleyen sistemlerle iletişim kurmayı
sağlayan tiplerin yer aldığı isim alanına OleDb .NET Data Provider, ODBC standardı için

Sayfa 4 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

olanlara da ODBC .NET Data Provider denilmektedir. Bu isim alanlarının tamamı,


[Link] isim alanı altında yer almaktadır.

Not: .NET veri sağlayıcı sınıfları, farklı türdeki veritabanlarına bağlanmak için kullanılır. Bu
sınıflar sayesinde istenilen türdeki veri kaynağına kolayca bağlantı kurulabilir, veri çekilebilir
ve gerekli güncelleme işlemleri yapılabilir.

Not: Hangi veri kaynağı kullanılacaksa, sadece ona uygun veri sağlayıcı sınıfı kullanılmalıdır.

Not: ODBC .NET veri sağlayıcıları, diğer veri sağlayıcılarından farklı olarak, veri kaynağına
bağlanırken hiçbir ara katman kullanmaz. Bunun yerine, bağlantı için ODBC API’leri
kullanır.

[Link]

[Link] ile uygulama geliştirirken kullanılabilecek, tüm veri sağlayıcılar için ortak olan
bileşenlerin bulunduğu isim alanıdır. Mesela burada; çok güçlü ve çok da kullanışlı olan
DataSet, DataTable gibi tipler vardır.

[Link]

SQL Server ile çalışabilmek için yazılmış tiplerin yer aldığı bu isim alanı, SQL Server 7.0 ve
sonraki versiyonları ile birlikte kullanılabilmektedir.

[Link]

SQL Server 6.5 ve önceki sürümleri, Microsoft Access, Oracle, Text Dosyalar, Excel
Dosyaları vb. gibi, OleDb arayüzü sağlayan tüm sistemlere bağlantı kurmak için gerekli olan
tipleri barındırmaktadır. Ayrıca SQL Server’ın 6.5 sonrası versiyonları için de
kullanılabilmektedir.

[Link]

ODBC (Open DataBase Connectivity) standartlarını destekleyen ve ODBC sürücüsü bulunan


sistemlere bağlantı kurmayı sağlayan tipleri içermektedir.

[Link]

Oracle .NET Framework Veri Sağlayıcısı, Oracle Client yazılımı tarafından sağlanan Oracle
Çağrı Arabirimi(OCI) kullanarak bir Oracle veritabanına erişim sağlar. Veri sağlayıcısının
işlevselliği, SQL Server, OLE DB ve ODBC için .NET Framework veri sağlayıcılarının
işlevselliğine benzer şekilde tasarlanmıştır.’

Sql Server .NET Data Provider

Yapılacak örnekler ve değinilecek konular Sql Server .NET Data Provider üzerinden
işlenecektir.

Not: Öğrenim ve kullanım kolaylığı olması amacıyla [Link] veri sağlayıcıların


isimlendirilmesinde genelleştirmeye gidilmiştir. SQL Server .NET veri sağlayıcılarının sınıf
Sayfa 5 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

isimleri “Sql” ön eki ile, OLE DB .NET veri sağlayıcılarının sınıf isimleri ise “OleDb” ön eki
ile başlar. Bu genellemeye “SqlConnection” ve “OleDbConnection” örnekleri verilebilir.

Sql Server .NET Data Provider bileşenlerini incelemeden önce, herhangi bir veri kaynağı ile
uygulamalar arasında veri taşıyabilmek için neler yapılması gerektiğini, provider’lardan
bağımsız olarak incelemek, genel olarak [Link] mimarisine yukarıdan bakabilmek
anlamına gelmektedir. Öncelikle en az bir adet veri kaynağı olması gerekmektedir. Burada
veri kaynağı olarak Sql Server, Oracle, DB2, Interbase, Paradox, XML, Excel, Dbase, Access,
CSV , Text vb... kullanılabilir.

Veri Kaynağı ve Uygulama (Application)

Veri kaynağı ile uygulamalar farklı makinalarda olabileceği gibi, aynı makina üzerinde de
olabilirler, ancak nerede olurlarsa olsunlar, sonuçta iki farklı platformdan bahsedildiği için;
uygulama ile veri kaynağını konuşturabilmek ve onları iletişime hazırlamak gerekecektir. İşte
bu noktada, veri kaynağı ile uygulamaları konuşturacak olan, hangi makinadaki, hangi veri
kaynağına hangi güvenlik ayarlarıyla gidilmesi gerektiği bilgilerini taşıyan bağlantı
(Connection) nesnesine ihtiyaç duyulacaktır.

Veri Kaynağı, Uygulama ve Command Nesnesi

Veri kaynağı ile bağlantının kurulmuş olması, veri taşımak için yeterli olmayacaktır. Bir veri
kaynağına veri göndermek için ya da oradan veri almak için bazı komutlara (Sql Cümleleri,
Stored Procedure (Saklı yordam) isimleri) ve hatta bu komutlarla birlikte taşınması gereken
parametrelere ihtiyaç olacaktır. [Link] platformunda bu işlemleri yapabilmeyi sağlayan

Sayfa 6 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

ve belli bir bağlantı üzerinden ilgili veri kaynağına müdahale edebilen, oraya veri gönderme
veya oradan veri alma isteğini sistemler arasında taşıyan Command adı verilen bir bileşen yer
almaktadır.

Datareader

Command adı verilen bileşen aracılığıyla, uygulama tarafından veri kaynağına veri
gönderebilir. Bunun sonucunda herhangi bir işlem yapılmasına gerek yoktur. Ancak
kullanılan sql cümlesi veri getirecek şekilde yazılmışsa, gelecek olan veriyi uygulama
tarafında kullanabilmek için de bazı bileşenlere ihtiyaç olacaktır. Bu bileşenlerden bir tanesi,
yine provider’a göre değişen özelliklere sahip, verinin uygulamaya ileri yönlü ve sadece
okunabilir olacak şekilde aktarılmasına imkan veren DataReader adındaki bileşendir.

Veri Kaynağı, Uygulama , Command Nesnesi ve DataReader

Yukarıda genel olarak bahsedilen bu bileşenlerin Sql Server .NET Data Provider isim
alanındaki karşılıkları aşağıda belirtilmiştir.

Her bir veri sağlayıcısı içerisinde, birçok bağlantı nesnesi bulunur.

• Connection

• Command

• DataReader

• DataAdapter

Not: Öğrenim ve kullanım kolaylığı olması amacıyla [Link] veri sağlayıcıların


isimlendirilmesinde genelleştirmeye gidilmiştir. SQL Server .NET veri sağlayıcılarının sınıf

Sayfa 7 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

isimleri “Sql” ön eki ile, OLE DB .NET veri sağlayıcılarının sınıf isimleri ise “OleDb” ön eki
ile başlar. Bu genellemeye “SqlConnection” ve “OleDbConnection” örnekleri verilebilir.

• XxxConnection: : Veri kaynağına bağlantı için kullanılan sınıftır.

• XxxCommand: Veri kaynağı üzerinde sorgu çalıştırmak için kullanılır. Veri


kaynağından dönen kayıtlar XxxDataReader veya DataSet kullanılarak veri bağlantılı
kontrollere aktarılır.

• XxxDataReader: Çevrimiçi bağlantılarda sadece veri okumak için kullanılan sınıftır.

• XxxDataAdapter: Çevrimdışı bağlantılarda kullanılan veri işleme nesnesidir.

Bağlantılı ve Bağlantısız Veri Ortamları

[Link] teknolojisi, veri işlemek için iki yöntem(model) sunar. Bu yöntemler bağlantılı
(connected) erişim ve bağlantısız (disconnected) erişim olarak adlandırılmaktadır. Bağlantılı
erişimde uygulama, veritabanına veri işlemleri gerçekleştiği sürece bağlı kalır. Bağlantısız
erişimde ise uygulama, veri kaynağı sadece veri alış verişi yapılırken açılır ve işlem bittikten
sonra kapatılır. Bağlantısız veri erişiminde veri kaynağından alınan veriler bellekte belirli bir
süre ve belirli işlemlere tabi olarak tutulabilir. Böylece sürekli veri tabanına bağlanmaya
gerek kalmaz.

Sayfa 8 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

 SqlConnection; MS SQL Server üzerinde bağlantı açmak ve kapatmak için kullanılan


sınıfdır.

 SqlCommand; MS SQL Server üzerinde Stored Procedure (Saklı Yordamlar) veya


SQL Cümleleri çalıştırmak için kullanılan sınıftır.

 SqlDataReader; MS SQLServer üzerinde SqlCommand ile çalıştırılan SELECT


sorguların sonuçlarını geri döndürmek için kullanılan sınıftır.

 SqlDataAdapter; MS SQL Server’dan çekilen verileri DataSet içerisine ve DataSet‘e


çevrimdışı eklenmiş verileri MS SQL Server’a aktarmak için kullanılan sınıftır.

 DataSet; SQLDataAdapter nesnesinden gelen kayıtları çevrimdışı depolamak ve


yönetmek için kullanılan sınıftır. DataSet tüm veri sağlayıcı sınıflar için ortaktır.

 OleDbConnection; Access veya diğer veritabanları üzerinde bağlantı açmak ve


kapatmak için kullanılan sınıftır.

 OleDbCommand; Access veya diğer veritabanları üzerinde Stored Procedure (Saklı


Yordamlar) veya SQL Cümleleri çalıştırmak için kullanılan sınıftır.

 OleDbDataReader; Access veya diğer veritabanları üzerinde OleDbCommand ile


çalıştırılan SELECT sorguların sonuçlarını geri döndürmek için kullanılan sınıftır.

Sayfa 9 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

 OleDbDataAdapter; Access veya diğer veritabanlarından çekilen verileri DataSet


içerisine ve DataSet‘e çevrimdışı eklenmiş verileri ilgili veritabanına aktarmak için
kullanılan sınıftır

Sql Server Instance Nedir?

Tek bir sunucu üzerine birden fazla SQL Server yükleyebilirsiniz. Bu yüklü olan SQL
Server’ların her biri “Instance” (örnek) olarak isimlendirilir.

SqlConnection

Bu sınıfı kullanarak, bağlantı kurulmak istenen SQL Server örneğini, kullanılmak istenen
veritabanını, ve bağlantı için gerekli olan güvenlik ayarlarını belirttikten sonra, bağlantı açılıp
veritabanı kullanılabilir. Daha sonra diğer tipler devreye girer ve veri taşıma işlemleri
başlatılabilir. Ancak unutulmaması gereken çok önemli nokta; açılan bağlantının işlemler
bittikten sonra tekrar kapatılmasının gerekliliğidir. Eğer açılan bağlantılar kapatılmazsa, bir
süre sonra SQL Server’ın kaynaklarının gereksiz yere harcanmasından dolayı sorunlar
yaşanabilir.

SqlConnection sınıfı ile çalışırken dikkat edilmesi gereken belki de en önemli nokta bağlantı
cümlesidir. Çünkü SQL Server’a bağlantı kurulurken, belli yetkilere sahip, belli rolleri olan
kullanıcılar adına bağlantı kurulması gerekmektedir. Bu nedenle kısaca SQL Server’ın
güvenlik modellerinden bahsetmekte yarar vardır.

Kimlik Doğrulama (Authentication) Nedir?

Kimlik doğrulama, bir kullanıcının veya programın bir sisteme erişirken kim olduğunu
kanıtlama işlemidir. Kimlik doğrulama teknolojisi, bir kullanıcının kimlik bilgilerinin yetkili
kullanıcıların veri tabanında veya bir veri doğrulama sunucusundaki kimlik bilgileriyle eşleşip
eşleşmediğini kontrol ederek sistemler için erişim kontrolü sağlar.

Temel olarak SQL Server’da aşağıdaki iki kimlik doğrulama türü vardır:

 Windows Authentication
 SQL Server Authentication

1. Windows Authentication : SQL Server’a erişmek için geçerli bir Windows kullanıcısı
gerekmektedir.
2. SQL Server Authentication : SQL Server’a erişmek için geçerli olan bir SQL Server
user bilgisi gerekmektedir.

Not: Kimlik doğrulaması olarak Windows Authentication kullanılırsa, sadece erişim izni
bulunan windows kullanıcısı ile erişim sağlayabilirsiniz. Herhangi bir SQL Kullanıcı ile
sisteme erişemeyeceksiniz.

Sayfa 10 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

SqlConnection tipinin en çok kullanılan özellikleri ve metodları şunlardır.

“Data Source=Server; Initial Catalog=Veritabani; Integrated security=True;Persist Security


Info=False”

“Data Source=Server; Initial Catalog=Veritabani; Integrated security=False;Persist


Security Info=False;User ID=loginadi; Password=sifre”

ConnectionString “Data Source=Server; Initial Catalog=Veritabani; Integrated security=True;Persist Security


Info=False;Pooling=True/False; Max Pool Size=100; Min Pool Size=0 ”

Data Source : SQL Server instance adı.


Initial Catalog : Veritabanı adı.
Integrated Security : True; Windows Authentication ile bağlantının
yapılması, False ise; SQL Server Authentication ile bağlantının yapılmasıdır ve
UserID-Password girilmelidir.
Persist Security Info : SQL Server’ın güvenlik bilgilerini uygulama
tarafına geriye göndermesidir. Varsayılan olarak False değerine sahiptir.
Pooling
: SQL Server bağlantı havuzunu destekler. Aynı
ConnectionString isteklerinde bağlantının baştan oluşturulması için tekrar
kaynak harcamak yerine, mevcut bağlantının işlemler bittikten sonra havuza
atılmasını sağlamak için kullanılır. Varsayılan olarak True değerine sahiptir.
Max Pool Size : Aynı bağlantı cümleleri için açılan havuzda, maksimum
kaç tane bağlantının bulunabileceğini belirtir.
Min Pool Size : Aynı bağlantı cümleleri için açılan havuzda, minimum
kaç tane bağlantının bulunması gerektiğini belirtir

ConnectionTimeout veya Connect Timeout: Veritabanı bağlantı için


beklenmesi gereken maksimum saniye sayısıdır. Varsayılan deger 15
saniye dir.

Open() Bağlantının kullanıma hazır olması ve açılmasını sağlar. SQL Server


üzerinden kaynakların ayrılması ve kullanılabilmesini sağlayan metottur.

Close() Bağlantının kapatılmasını sağlar. SQL Server tarafından ayrılan


kaynakların bırakılmasını sağlar.

ConnectionState Bağlantının durumunu verir. Alabileceği değerler

Sayfa 11 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

şeklindedir. Böylece bağlantının durumuna göre yapılacak işleme karar verilebilir.

Microsoft SQL Server Management Studio

Sql server management ise Microsoft geliştirdiği bir database editörüdür. Bu editör
yardımıyla T-SQL komutlarını kullanarak datalarımız üzerinde birçok farklı işlemler
yapabiliriz.

Bu programlar aracılığı ile MSSQL tipinde bir veritabanı oluşturur, veritabanını tasarlar,
gerekli ayarları yaparsınız. Yani kısacası veritabanı tasarımı yaparsınız.

Sayfa 12 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Bağlantı sağlandıktan sonra aşağıdaki ekran gelir.

Sayfa 13 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Sql Server Object Explorer

[Link] gibi .NET Framework kullanan dillerde veri tabanlarına ulaşmak için, .NET
Framework kütüphaneleri arasında bulunan [Link] (ActiveX Data Objects) kütüphanesi
kullanıldığını daha önce söylemiştik.

Visual Studio ile birlikte SQL Server yazılımının Express sürümü birlikte gelir. Bu nedenle
yeni bir SQL Server kurmamıza gerek kalmaz. Management studio programını kullanmadan
Visual Studio içerisinden Sql Server Object Explorer ile SQL Server’a ulaşabiliriz, veritabanı
oluşturabiliriz. Bu veritabanını düzenleyebiliriz.

Görünüm (View ) menüsünden Sql Server Object Explorer komutu ile veri tabanı işlemleri
yapacağımız Sql Server Object Explorer penceresi açılır.

Sayfa 14 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Databases seçeneğine sağ tıkladığımızda yukarıdaki menü açılır. Buradan Add New Database
komutu ile yeni bir veritabanı oluşturabiliriz. Bu durumda aşağıdaki Create Database
penceresi açılır ve burada oluşturmak istediğimiz veritabanı ismi girilir. Biz deneme1 ismini
girelim. İstersek oluşturmak istediğimiz veritabanının bulunacağı klasörüde bu pencereden
değiştirebiliriz.

Aşağıdaki şekilde görüldüğü gibi deneme1 adlı veritabanı oluşturulmuş durumda. Şimdi
musteri adlı tabloyu oluşturalım.

Sayfa 15 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Tablo oluşturmak için aşağıda şekilde de gösterilen Tables seçeneğine sağ tıklanır. Açılan
pencereden Add New Tables komutuna tıklanır.

Sayfa 16 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Aşağıda şekli de verilen açılan sekmede tablo adı verilir ve alanlar oluşturulur.

Sayfa 17 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Sayfa 18 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

MusteriId alanı özellikler penceresinden otomatik artması sağlanır (Auto İncrement). Bunu
sağlamak için Identity Specification kısmı ayarlanır.

Daha sonra iki yukarıda ki şekilde de gösterilen Update düğmesine tıklanır. Aşağıda
gösterilen pencere açılır. Burada Update Database düğmesine tıklanarak musteri tablosu
oluşturulur.

Sayfa 19 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

SQL Sever Object Explorer penceresinde deneme1 adlı veritabanında Tables sekmesi
genişletildiğinde müşteri tablosu da artık görünür.

Müsteri tablosuna sağ tıklatıp açılan menüden View Data komutunu tıklatırsak alanlara
verileri girebileceğimiz sekme açılır.

Sayfa 20 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Bu pencerede MusteriId alanı otomatik artacağı için, bu alana veri giremeyiz. Şimdi birkaç
kayıt oluşturalım.

Sayfa 21 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Not: Aşağıdaki örneğin çalışması için [Link] paketinin projeye yüklenmesi


gerekir.

(Solution Explorer - Çözüm Gezgini) Proje Üzerinde) mouse sağ click -> Nuget Paketlerini
Yönet->
Gözat sekmesini seçin ve [Link] paketini aratın ve eksik paketi yükleyin.

Örnek

Sayfa 22 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Imports System
Imports [Link]

Public Class Form1


Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
Dim cnn As New SqlConnection(cnnstr)
[Link] = "bağlantı durumu(1): " & [Link]
[Link]()
[Link] = "sunucu adı: " & [Link]
[Link] = "sunucu sürümü: " & [Link]
[Link] = "veritabanı adı: " & [Link]
[Link] = "bağlantı durumu(2): " & [Link]()

[Link]()
[Link] = "bağlantı durumu(3): " & [Link]()
End Sub
End Class

Dim cnnstr As String =


"server=(localdb)\MSSQLLocalDB;database=deneme325;integrated security=true;"

Örnek Uygulama
Bu örnekte, SQL Server’a bağlantı kurup, bu bağlantıyı açarak, veritabanını kullanıma hazır
hale getireceğiz. SqlConnection nesne örneğinin Open() metodu çağırıldıktan sonra, 5 saniye
boyunca ilgili bağlantı açık tutulmakta ve sonrasında bağlantı kapatılmakta ve bu 5 saniyede
bir tekrarlamaktadır.

Bağlantıyı kesmekteki amaç sistem kaynakları gereksiz yere tüketmemektir. Burada genel bir
kuralı belirtmekte fayda var: Çoğunlukla söz konusu veri kaynaklarına olan bağlantılar
mümkün olduğunca geç açılmalı ve işlemleri takiben mümkün olduğunca erken
kapatılmalıdır.

Sayfa 23 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Imports System
Imports [Link]

Public Class Form1


Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim cnn As New SqlConnection(cnnstr)
Dim a As Boolean = False

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = True
[Link] = a
[Link] = "bağlantı durumu(1): " & [Link]()
End Sub

Private Sub Timer1_Tick(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]

a = Not a
[Link] = a
If a = True Then

[Link]()
[Link] = "bağlantı durumu(1): " & [Link]()
Else
[Link]()
[Link] = "bağlantı durumu(6): " & [Link]()

End If

End Sub

End Class

Sayfa 24 / 24
KONTROLLER - II

AÇILIR KUTULAR (COMBOBOX)

Açılır kutu bir liste biçiminde verileri tutan ve tıklandığında açılarak içerdiği tüm verileri
listeleyen kutudur. Sadece tıklandığı zaman açıldığı için form üzerinde yerden tasarruf
yapılmasını sağlar. Bu yüzden form üzerinde veri bulundurmak gerektiği zamanlarda sıklıkla
kullanılır.

ÖZELLİKLER

Backcolor:
Cursor:
Dock:
Enabled:
Font:
Forecolor:
Locations:
Locked:
Maximumsize:
Maxlength:
Minimumsize:
Size:
Visible:

Dropdownheight: açılan kısmın yüksekliğinin piksel olarak ayarlanmasını sağlar.

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = 200

End Sub

Dropdownstyle: Açılır metin kutusunun görünümünün ve fonksiyonelliğinin seçilmesini


sağlar.

Bir açılır kutu üç değişik biçimde kullanılır:

0 DropDown: DropDown, açılır kutunun standart kullanımıdır. Kutunun kenarındaki


kullanılan ok tıklanarak kutu açılır. Ve istenen eleman seçilir. Bunun yanında kullanıcı isterse
kutu üzerindeki yazıları değiştirerek kendi metnini yazabilir ve daha sonra bu metni kutuya
yerleştirebilir.

1 Simple: Açılır kutunun bu türünde kutu yanında ok bulunmaz. Açılır kutudan çok bir
liste kutusu görünümündedir.

2 DropDown List: DropDown’dan tek farkı kutu metninin değiştirilememesidir. Bu tip


kullanımda önceden belirlenmiş elemanlar seçilebilir. Kutu metni değiştirilemez.

Dropdownwidth: açılan kısmın genişliğinin piksel olarak ayarlanmasını sağlar. Çalışma


zamanında açılan kısmın genişliğinin değiştiğini görebilirsiniz.

Sayfa 1 / 11
KONTROLLER - II

Private Sub Button4_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = 400
End Sub

İtems: Açılır metin kutularında gösterilecek öğeleri belirlemek için kullanılır. Özelliğin
yanındaki düğme tıklandığında öğelerin hazırlanacağı koleksiyon editörü açılır. Her öğe bir
satıra gelecek şekilde öğe elemanları yazılmalıdır.

İtem: index numarası verilen elemanın adını verir.

MsgBox([Link](2))

[Link]: Açılır kutunun eleman sayısını verir.

Private Sub Button3_Click(sender As [Link], e As


[Link]) Handles [Link]
[Link] = [Link]

End Sub

[Link](i): Açılır kutuda index numarası i olan elemanı verir.


Private Sub Button5_Click(sender As [Link], e As
[Link]) Handles [Link]
[Link]=([Link](0))
End Sub

Sorted: Açılır liste kutusundaki öğelerin alfabetik olarak sıralı gösterilmesini sağlar.
Private Sub Button6_Click(sender As [Link], e As
[Link]) Handles [Link]
[Link] = True

End Sub

Selectedindex: Açılır metin kutusundaki öğelerin her birinin bir indeks numarası vardır. İlk
öğenin indeks numarası sıfırdır. Aktif (seçili) öğenin indeks numarası bu özellik ile öğrenilir.
Eğer hiçbir öğe seçili değilse özelliğin değeri -1 olur.

Selecteditem: Seçili öğenin adını verir.

Selectedtext: Açılır metin kutusundaki seçili metni belirtir. (combobox odağını kaybettiğinde
boş string dönderir)

Selectionlength: Seçili metnin karakter sayısını verir. (combobox odağını kaybettiğinde 0


değerini dönderir)

Sayfa 2 / 11
KONTROLLER - II

Selectionstart: Seçili metnin başlangıç dizin numarasını verir. (combobox odağını


kaybettiğinde 0 değerini dönderir)

Text: Combobox’ın metin alanına yazılacak metni veya açılır kutudan seçilen metni belirler.

Private Sub Button9_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Private Sub Button10_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Public Class Form1

Private Sub ComboBox1_Click(ByVal sender As Object, ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
End Sub

End Class

Sayfa 3 / 11
KONTROLLER - II

OLAYLAR

Dropdown: Açılan kısmı göstermek için ok işaretine tıklandığı anda (liste gösterilmeden
hemen önce) meydana gelir.

Dropdownclosed: Açılır metin kutusunun listesi kapandıktan hemen sonra meydana gelir.

Dropdownstylechanged: DropdownStyle özelliği değiştiğinde meydana gelir.

Selectindexchanged: Selectedindex özelliği değiştiğinde meydana gelir.

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As


[Link]) Handles [Link]
MsgBox("seçili eleman değişti")
End Sub

Textchanged: Text özelliği değiştiğinde meydana gelir.


Private Sub ComboBox1_TextChanged(sender As Object, e As
[Link]) Handles [Link]
MsgBox("text değişti")
End Sub

Click: Açılır kutunun text kısmına tıklanınca meydana gelir.

Private Sub ComboBox1_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = [Link]
[Link] = [Link]
End Sub

METOTLAR

Add Metodu: Bu metod açılır kutuya eleman yerleştirmek için kullanılır. Eleman yerleştirme
işlemi tasarım zamanında (design time) veya çalıştırma zamanında (run time) düzenlenebilir.
Tasarım zamanında kutuya eklenen elemanlar uygulama çalıştırıldığında otomatik olarak yer
alacaktır. Ancak kullanıcının da açılır kutuya eleman ekleyebilmesi çalışma zamanında Add
Metodu ile olur.

[Link](“Ortaöğretim”)
[Link](“Lise”)
[Link](“Lisans Eğitimi”)
[Link](degisken)
[Link]([Link])

Removeat Metodu: Removeat metodu açılır kutu içerisindeki bir elemanın kutudan
silinmesini sağlar. Silme işlemleri kutu içindeki elemanın index değerine göre yapılır.
Örneğin;

Combobox1. İ[Link](2)
Dizilimi kutu içindeki 2 index değerine sahip (baştan üçüncü) elemanı siler.

Sayfa 4 / 11
KONTROLLER - II

Remove Metodu:açılır kutu içerisindeki bir elemanın kutudan silinmesini sağlar. Silme
işlemleri kutu içindeki elemanın ismine göre yapılır. Örneğin;

[Link](“Ankara”)

Clear Metodu:Veri listesini silmek için kullanılır


[Link]()

Findstring: Belirtilen metni liste kutusu içerisinde arar ve bulduğu ilk öğenin dizin
numarasını verir.

Private Sub Button5_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = [Link]([Link])

End Sub

Findstringexact: Belirtilen metni liste kutusu içerisinde arar ve tam olarak eşleşen öğenin
dizin numarasını verir.

Count: açılır metin kutusundaki eleman sayısını verir.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
Dim i As Integer
i = [Link]([Link])
[Link] = i
[Link] =
[Link]([Link])
End Sub

Sayfa 5 / 11
KONTROLLER - II

Ör: Butona tıklanınca combo1’den seçilen elemanı text1’e yazan bir program yazın

Ör: combo1’den seçilen elemanı direkt (hiçbir butona tıklamadan, seçilir seçilmez) textbox1’e
yazan bir program yazın

Ör: ekle isimli butona tıklanıncaText1’e yazılan eleman combo1 eklensin, Tümünü sil isimli
butona tıklanınca da combo1 deki tüm elemanlar silinsin

Sayfa 6 / 11
KONTROLLER - II

Ör: Sil isimli butona tıklanınca Liste numarası Textbox1’e yazılmış olan eleman silinsin.

Sil isimli butona tıklanınca adı Textbox1’e yazılmış olan eleman silinsin.

Ör: Command1 butonuna tıklanınca combo1’de bulunan elemanlardan, Text2’ye Liste


numarası yazılan eleman Text1’e yazılsın

Sayfa 7 / 11
KONTROLLER - II

Ör: command1 butonuna tıklanınca combo1 deki aktif elemanın index değeri text2 ye yazılsın

Ör: Sil isimli butona tıklanınca combo1’de seçilen eleman silinsin

Ör:

Public Class Form1

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As


[Link], _
ByVal e As [Link]) Handles
[Link]

' Cast the sender object back to a ComboBox.


Dim ComboBox1 As ComboBox = CType(sender, ComboBox)

' Retrieve the selected item.


Dim selectedString As String =
CType([Link], String)

' Convert it to lowercase.

Sayfa 8 / 11
KONTROLLER - II

selectedString = [Link]()

' Declare the current size.


Dim currentSize As Single

' Switch on the selected item.


Select Case selectedString

' If Bigger is selected, get the current size from


the
' Size property and increase it. Reset the font to
the
' new size, using the current unit.
Case "bigger"
currentSize = [Link]
currentSize += 2.0F
[Link] = New Font([Link],
currentSize, _
[Link], [Link])

' If Smaller is selected, get the current


size, in points,
' and decrease it by 1. Reset the font with
the new size
' in points.
Case "smaller"
currentSize = [Link]
currentSize -= 1
[Link] = New Font([Link],
currentSize, _
[Link])
End Select
End Sub

Private Sub Form1_Load(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link]("bigger")
[Link]("smaller")
[Link] = "MERSİN ÜNİVERSİTESİ"

End Sub
End Class

TİMER

Zaman değeri ayarlanabilir sayaçtır.

ÖZELLİKLER

Enabled:kontrolün aktif olup olmadığını belirtir.

Sayfa 9 / 11
KONTROLLER - II

Interval Integer Sayacın hangi zaman aralığında bir çalışması gerektiğini belirler. Milisaniye
cinsindedir.

OLAY

Tick Interval özelliğinde belirtilen zaman değeri geçtiğinde gerçekleşir.

METOTLAR

Start : Sayacı başlatır


Stop: Sayacı durdurur

Public Class Form1

Dim saat, dakika, saniye, salise As Byte

Private Sub Form1_Load(sender As [Link], e As


[Link]) Handles [Link]
[Link] = 100

saat = 0
dakika = 0
saniye = 0
salise = 0
[Link] = CStr(salise)
[Link] = CStr(saniye)

Sayfa 10 / 11
KONTROLLER - II

[Link] = CStr(dakika)
[Link] = CStr(saat)
[Link] = False
End Sub

Private Sub Button1_Click(sender As [Link], e As


[Link]) Handles [Link]
[Link] = True

End Sub

Private Sub Button2_Click(sender As [Link], e As


[Link]) Handles [Link]
[Link] = False

End Sub

Private Sub Timer1_Tick(sender As [Link], e As


[Link]) Handles [Link]
salise = salise + 1
If salise = 10 Then
salise = 0
saniye = saniye + 1
End If

If saniye = 60 Then
saniye = 0
dakika = dakika + 1
End If

If dakika = 60 Then
dakika = 0
saat = saat + 1
End If
[Link] = CStr(salise)
[Link] = CStr(saniye)
[Link] = CStr(dakika)
[Link] = CStr(saat)
End Sub
End Class

Sayfa 11 / 11
MENÜLER VE ARAÇ ÇUBUKLARI

MENÜLER VE ARAÇ ÇUBUKLARI

Bir menü, menü çubuğunda yer alır ve ilişkili bir komutlar listesi içerir. Bir araç çubuğu
programda yararlı işler yapan düğmeler ve başka araçlar içerir. Araç çubuğu düğmelerinin ve
menü komutlarının çoğu tıklandıktan sonra hemen çalışır. Bir menü komutunun yanında üç
nokta (…) varsa, komutu tıklamak komut çalıştırılmadan önce daha çok bilgi isteyen bir
iletişim kutusu görüntüler

MENÜ STRİP DENETİMİ

Menü Strip denetimi, programınıza menüler eklemenizi sağlayan bir araçtır. Menü Strip ile
yeni menüler ekleyebilir, var olan menüleri değiştirebilir ve yeniden düzenleyebilir, eski
menüleri silebilirsiniz.

Menü Strip menü ve komutların yalnızca görünür kısımlarını oluşturur. Menülerin ve


komutların çalışması için olay yordamları yazmanız gerekir.

Ör:

Toolbox’ın Menus and Toolbars sekmesindeki Menü Strip denetimini tıklayın. Menü nesnesi
form üzerinde değil bileşen tepsisi (component tray) adı verilen ayrı bir bölmede görünür.
(program çalıştığında görünmeyen nesneler bu bölmede görüntülenir.)

Bileşen tepsisindeki menü nesnesine ek olarak, oluşturduğunuz menünün görsel bir sunumu
formun üst kısmında görüntüler. Type Here etiketini tıklayıp menü başlığını hemen
girebilirsiniz. İlk menü başlığını girdikten sonra, ok tuşlarına basıp adlarını yazarak alt menü
başlıklarını ve diğer menülerin adlarını girebilirsiniz.

Sayfa 1 / 10
MENÜLER VE ARAÇ ÇUBUKLARI

Nesne Adı Özellik Özellik Değeri

Label1 Autosize False


BorderStyle FixedSingle
Font Microsoft Sans Serif, Bold, 14 nk
Text Boş
TextAlign MiddleCenter

Public Class Form1

Private Sub Form1_Load(sender As [Link], e As


[Link]) Handles [Link]

End Sub

Private Sub TimeToolStripMenuItem_Click(sender As [Link],


e As [Link]) Handles [Link]
[Link] = TimeString

End Sub

Private Sub DateToolStripMenuItem_Click(sender As [Link],


e As [Link]) Handles [Link]
[Link] = DateString

End Sub
End Class

Not: tarih yerelleştirilmesi için aşağıdaki kodları kullanabilirsiniz:

Dim JDATE As DateTime = [Link]()


JDATE = [Link]("yyyy'/'MM'/'dd",
[Link])
[Link] = JDATE

VEYA

[Link] = Format([Link], "dddd, d MMMM yyyy")

MsgBox("The formatted date is " & Format(#5/31/1993#, "dddd, d MMMM


yyyy"))

Sayfa 2 / 10
MENÜLER VE ARAÇ ÇUBUKLARI

SİSTEM SAATİNİN ÖZELLİKLERİ VE İŞLEVLERİ

Sistem saatinden zamana ait değerleri almk için çeşitli özellik ve işlevler kullanabilirsiniz. Bu
değerleri programınızda özel takvim, saat ve alarm oluşturmak için kullanabilirsiniz.

Özellik ya da İşlev Açıklama

TimeString Bu özellik, sistem saatinden geçerli zamanı verir

DateString Bu özellik, sistem tarihinden geçerli tarihi verir

Now Bu özellik, geçerli tarih ve saati temsil eden kodlanmış bir değer
verir.

Hour (tarih) Bu işlev, belirlenen saatin saat kısmını getirir. (0 ve 23


arasında)

Minute (tarih) Bu işlev, belirlenen saatin dakika kısmını getirir. (0 ve 59


arasında)

Second (tarih) Bu işlev, belirlenen saatin saniye kısmını getirir. (0 ve 59


arasında)

Month (tarih) Bu işlev, ayı temsil eden bir tamsayı getirir. (1 ve 12 arasında)

Year (tarih) Bu işlev, belirlenen tarihin yıl kısmını getirir.

Weekday (tarih) Bu işlev, haftanın gününü temsil eden bir tamsayı getirir. (1
Pazar, 2 pazartesi, v.b.)

MENÜLERE KISAYOL TUŞLARI ATAMAK

Kısayol tuşları (Shortcut keys) kullanıcının bir komutu menü çubuğunu kullanmadan
çalıştırmak için basabileceği. Tuş bileşimleridir. Örneğin Microsoft Word gibi uygulamalarda
ctrl + c kısayol tuşu seçili metni panoya kopyalar. MenuStript denetiminin shortcutKeys
özelliği ile kısayol tuşları atayabilirsiniz.

Örneğin clock menüsünün Time komutuna ctrl + T, Date komutuna da ctrl + D kısayol
tuşlarını atayalım.

Not: VB, kullanıcılara hangi tuşlara basılacağını belirtmek için programı çalıştırdığınızda
normal olarakkısayol tuş bileşimini menüde görüntüler. Yeterli yeriniz yoksa, kısayol tuş
bileşimlerini gizlemek için ShowShortcutKeys özelliğini false olarak ayarlayabilirsiniz.
Kısayol tuşları yine çalışacak, ancak kullanıcıya görsel bir anımsatma yapmayacaktır.
Programda kısayol tuşu olarak görüntülenecek metni ShortcutKeyDisplayString özelliği ile
ayarlayabilirsiniz.

Sayfa 3 / 10
MENÜLER VE ARAÇ ÇUBUKLARI

TOOLSTRIP DENETİMİ

ToolStrip denetimini kullanarak programınızın arabirimine kolayca araç çubukları


ekleyebilirsiniz. ToolStrip denetimi de bileşen tepsisinde durur. Araç çubuklarına etiketler,
açılan kutular, metin kutuları ve bölme düğmeleri gibi çeşitli yeni özellikler ekleyebilirsiniz.

Ör: aşağıdaki işlemleri adım adım yapınız.

1. Toolbox’ın menü & Toolbars sekmesindeki ToolStrip denetimini ekleyin

2. Yeni araç çubuğunun sağ üst köşesindeki küçük kısayol okunu tıklayın. Bu kısayol
oku akıllı etiket olarak adlandırılır. Oku tıkladığınızda, en sık kullanılan araç çubuğu
görevlerini ve özelliklerini içeren ToolStrips Tasks penceresi açılır. Bu komutlarla
araç çubuğunu hızla yapılandırabilirsiniz.

3. İnsert standard items’i tıklayın. Bu komut araç çubuğuna New (Yeni), Open (aç), Save
(Kaydet), Print (Yazdır), Cut (Kes), Copy (Kopyala), Paste (Yapıştır) ve Help
(Yardım) standart araç çubuğu düğmelerini ekler. (Tek tek düğme ekleyebilirsiniz.
Buradaki gibi otomatik olarak eklemek zorunda değilsiniz.)

4. Araç çubuğunun sağ kenarındaki Add ToolStripButton düğmesini tıklayın, sonra da


Button’ı tıklayın. Add ToolStripButton, araç çubuğuna düğmeler, etiketler, bölme
düğmeleri, metin kutuları açılır kutular V.B. ekler. Varsayılan ayar olarak üzerinde bir
dağ ve güneş resmi olan özel bir araç çubuğu düğmesi oluşturduk.

5. Yeni düğmeyi farenin sağ düğmesiyle tıklayın ve DisplayStyle’ı işaret edip


ImageAndText’i tıklayın. Bu komut düğmenin hem metin hem de grafik olarak
görünmesini sağlar. Düğmenin varsayılan adı ToolStripButton1’dir.

6. ToolStripButton1 nesnesini seçin. Text özelliğini Renk olarak ayarlayın ve Enter


tuşuna basın.

7. Renk düğmesini farenin sağ tuşuyla tıklayın, sonra da Set Image komutunu tıklayın.

8. Seçili değilse Local Resource’u tıklayın, sonra da import düğmesine tıklayın.

9. Bir resim seçin.

ARAÇ ÇUBUĞU DÜĞMELERİNİ TAŞIMAK VE SİLMEK

VB sürükle bırak yöntemiyle araç çubuğu düğmelerinin yerlerini değiştirmenize olanak verir.

Farenin sağ düğmesiyle istediğiniz düğme üzerine tıklayıp, buradan da delete’i seçerek
istediğiniz düğmeyi silebilirsiniz.

Dropdown buttons Menu Items on a Toolbar

Açılır düğmenin temel özelliği, bir menü ile donatılmış olmasıdır. Menüyü görsel olarak
oluşturmak için, düğmeyi ekledikten sonra Buraya Yazın etiketli bir metin kutusu görüntüler.
Alternatif olarak, araç çubuğundaki açılır düğmeyi tıklayın. Özellikler penceresinde
DropDownItems öğesine tıklayın, ardından Öğeler Koleksiyonu Düzenleyicisini açmak için
gözat düğmesine tıklayın.

Sayfa 4 / 10
MENÜLER VE ARAÇ ÇUBUKLARI

Açılır düğmenin menü öğeleri, daha önce gördüğümüz menü öğeleri gibi davranır. Buna
dayanarak, düğmenin öğelerini menü öğeleri için incelediğimiz şekilde yapılandırabilirsiniz.

Separators on a Tool Bar

Ayırıcı, bir araç çubuğunda bölümler veya öğe grupları oluşturmak için kullanılan dikey bir
çubuktur. Ayırıcının nereye konulacağına dair kesin bir kural yoktur. Sadece deneyiminiz ve
ihtiyaçlarınız size rehberlik edecek.

The Split Button on a Toolbar

Kullanıcı bir açılır düğmeyi tıkladığında, menüsü otomatik olarak görüntülenir. Alternatif
olarak, solda normal bir düğme ve sağda bir menü gösteren bir çubukla bölünmüş bir düğme
oluşturabilirsiniz. Bunu desteklemek için .NET Framework, ToolStripSplitButton sınıfını
sağlar. Bu sınıf, bölme düğmesi adlı bir denetimle temsil edilir.

Split buttonda sadece oka tıklandığında menü açılır. Dropdown buttonda ise butona da
tıklayabilirsiniz.

Combobox

Kullanıcının bir öğe seçebileceği bir liste sağlamak için bir araç çubuğuna birleşik giriş
kutusu ekleyebilirsiniz. Birleşik giriş kutusu ToolStripComboBox sınıfı tarafından işlenir. Bir
araç çubuğuna görsel olarak birleşik giriş kutusu eklemek için aşağıdaki eylemlerden birini
gerçekleştirin:

Label

Metni görüntülemek için label oluşturabilirsiniz.

Private Sub ToolStripLabel2_Click(sender As [Link], e As


[Link]) Handles [Link]
[Link]("[Link]",
[Link]())
End Sub
Tag özelliğinin değeri: “http//[Link]” olsun

Yukarıdaki örnek tag olmayabilir. Doğrudan yazılabilir.

[Link]("[Link]",
[Link]())

Textbox

Metin kutusu oluşturarak kullanıcının metin kutusuna değer girmesini sağlayabilirsiniz. Veya
kullanıcıya bir değer gösterebilirsiniz.

Sayfa 5 / 10
MENÜLER VE ARAÇ ÇUBUKLARI

BAĞLAM MENÜ (CONTEXT MENÜ)

Bağlam menü eklemek için diğer menüde olduğu gibi önce toolbar’dan ekleriz. Varsayılan adı
contextmenu1’dir. İstersek her nesne için ayrı ayrı ekleyebiliriz. Bunlardan birini seçtiğimizde
menü elemanlarını yazacağımız metin kutuları ekrana gelir ve menülerin adlarını yazarız.
Menü adlarına çift tıkladığımızda olay yordamı açılır ve kodlarımızı buraya yazarız.

Örnek

Form üzerine iki metin kutusu ekleyiniz. Aşağıdaki kodları yazınız. TextBox1 adlı metin
kutusuna yazılar girip bir kısmını seçiniz. Daha sonra farenin sağ tuşuna tıklayıp işlemlerinizi
yapınız.

Private Sub CutToolStripMenuItem_Click(sender As Object, e As


EventArgs) Handles [Link]
[Link]()
End Sub

Private Sub CopyToolStripMenuItem_Click(sender As Object, e As


EventArgs) Handles [Link]
[Link]()
End Sub

Private Sub PasteToolStripMenuItem_Click(sender As Object, e As


EventArgs) Handles [Link]
[Link]()
End Sub

Örnek:

Public Class Form1

Private Sub Form1_Load(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = "VİZE NOTU"
[Link] = "UYGULAMA NOTU"
[Link] = "FİNAL NOTU"

End Sub
Sayfa 6 / 10
MENÜLER VE ARAÇ ÇUBUKLARI

Function ortalama(ByVal v1 As Byte, ByVal f As Byte, ByVal v2 As


Byte) As Byte
Dim ort As Byte

ort = [Link]((v1 * 20 / 100 + v2 * 20 / 100 + f * 60 /


100), 0)

Return ort

End Function
Function ortalama(ByVal v1 As Byte, ByVal f As Byte) As Byte
Dim ort As Byte

ort = [Link]((v1 * 40 / 100 + f * 60 / 100), 0)

Return ort

End Function

Private Sub Button1_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
Dim vize, uygulama, final, bn As Byte
vize = CInt([Link])

final = CInt([Link])

If [Link] <> "" Then


uygulama = CInt([Link])
bn = ortalama(vize, final, uygulama)
Else
bn = ortalama(vize, final)

End If
MsgBox("Başarı notu= " & bn)
MsgBox(ortalama(50, 70, 60))
MsgBox(ortalama(50, 60))
End Sub

Private Sub TimeToolStripMenuItem_Click(ByVal sender As


[Link], ByVal e As [Link]) Handles
[Link]
[Link] = TimeString
End Sub

Private Sub DateToolStripMenuItem_Click(ByVal sender As


[Link], ByVal e As [Link]) Handles
[Link]
[Link] = DateString

Sayfa 7 / 10
MENÜLER VE ARAÇ ÇUBUKLARI

End Sub

Private Sub ToolStripButton1_Click(ByVal sender As


[Link], ByVal e As [Link]) Handles
[Link]
[Link] = TimeString
End Sub

Private Sub ToolStripButton2_Click(ByVal sender As


[Link], ByVal e As [Link]) Handles
[Link]
[Link] = TimeString
End Sub

Private Sub ContextMenuStrip1_Opening(ByVal sender As


[Link], ByVal e As [Link])

End Sub

Private Sub SaatToolStripMenuItem_Click(ByVal sender As


[Link], ByVal e As [Link])
[Link] = TimeString
End Sub

Private Sub TarihToolStripMenuItem_Click(ByVal sender As


[Link], ByVal e As [Link])
[Link] = DateString
End Sub

Private Sub TarihToolStripMenuItem_Click_1(ByVal sender As


[Link], ByVal e As [Link]) Handles
[Link]
[Link] = DateString
End Sub

Private Sub SaatToolStripMenuItem_Click_1(ByVal sender As


[Link], ByVal e As [Link]) Handles
[Link]
MsgBox(ortalama(50, 70, 60))
MsgBox(ortalama(50, 60))
End Sub

Private Sub ArkaPlanRengiToolStripMenuItem_Click(ByVal sender As


[Link], ByVal e As [Link]) Handles
[Link]
If [Link]() = [Link]
Then
[Link] = [Link]
End If

Sayfa 8 / 10
MENÜLER VE ARAÇ ÇUBUKLARI

End Sub
End Class

Örnek:

Public Class Form1


Public Function MouseIsOverControl(ByVal c As Control) As Boolean
Return [Link]([Link]([Link]))
End Function

Private Sub YazıRengiToolStripMenuItem_Click(sender As Object, e As EventArgs)


Handles Yazı[Link]
If MouseIsOverControl(Button1) Then
If [Link]() = [Link] Then

[Link] = [Link]
End If
End If

If MouseIsOverControl(Button2) Then
If [Link]() = [Link] Then

[Link] = [Link]
End If
End If
If MouseIsOverControl(Button3) Then
If [Link]() = [Link] Then

[Link] = [Link]
End If
End If
End Sub

Private Sub ArkaPlanRengiToolStripMenuItem_Click(sender As Object, e As EventArgs)


Handles [Link]
If MouseIsOverControl(Button1) Then
If [Link]() = [Link] Then

[Link] = [Link]
End If
End If

If MouseIsOverControl(Button2) Then
If [Link]() = [Link] Then

[Link] = [Link]
End If
End If
If MouseIsOverControl(Button3) Then
If [Link]() = [Link] Then

[Link] = [Link]
End If
End If
End Sub
End Class

Örnek:

Sayfa 9 / 10
MENÜLER VE ARAÇ ÇUBUKLARI

Public Class Form1


Public Function MouseIsOverControl(ByVal c As Control) As Boolean
Return [Link]([Link]([Link]))
End Function

Private Sub YazıRengiToolStripMenuItem_Click(sender As Object, e As EventArgs)


Handles Yazı[Link]
For Each nesne As Control In [Link]
If MouseIsOverControl(nesne) Then
If [Link]() = [Link] Then

[Link] = [Link]
End If
End If
Next

End Sub

Private Sub ArkaPlanRengiToolStripMenuItem_Click(sender As Object, e As EventArgs)


Handles [Link]

For Each nesne As Control In [Link]


If MouseIsOverControl(nesne) Then
If [Link]() = [Link] Then

[Link] = [Link]
End If
End If
Next

End Sub

End Class

Sayfa 10 / 10
HATA YAKALAMA

YAPILANDIRILMIŞ HATA YAKALAMA (STRUCTURED EXCEPTION


HANDLING)

Hata yakalama (exception handling) beklenmedik durumlarda programınızın bir hata mesajı
vermesi ve çalışmayı durdurması yerine, hataya kendi istediğimiz şekilde cevap vermesini
sağlamanın bir yoludur. Yapılandırılmış hata yakalamada Try Catch kullanılır.

Try Catch Finally

Sözdizimi:

Try

Hatanın oluşabileceği kod bloğu

Catch

Hata durumunda çalıştırılacak kod bloğu

Finally

Kodların hatalı veya hatasız olmasına bakılmaksızın çalıştırılacak kod bloğu

Try Catch Finally, yukarıda görüldüğü gibi toplam 3 blok içermektedir.

Birinci blok kodların doğru çalışma durumunda çalıştırılacak kodları içerir.


İkinci blok hata oluştuğunda çalıştırılacak kodları içerir.
Üçüncü blok ise kodların hatalı veya hatasız olmasına bakmaksızın çalıştıracağı kodları
içerir.

Örnek;
Bir toplama işleminde sadece sayısal değerler birbiri ile toplanabilir. Kullanıcı sayı yerine
sayı olmayan bir giriş yaptığında veya hiç giriş yapmadığında program hata verecektir.

Sayfa 1 / 5
HATA YAKALAMA

Public Class Form1

Private Sub Button1_Click(sender As [Link], e As [Link]) Handles


[Link]

[Link] = CInt([Link]) + CInt([Link])

End Sub

End Class

Yukarıdaki kodlarda kullanıcının hata yapmayacağı varsayılmıştır. Ancak kullanıcı hata


yapabilir. Sayı girmesi gereken metin kutularına başka karakterler girebilir. Yukarıdaki
kodları kullanmak yerine aşağıdaki kodları kullanırsak hatayı yakalarız. Hata oluştuğu zaman
catch’dan End Try kadar olan kodlar çalıştırılır. Program kodlarımızı try bloğuna yazıyoruz.
Catch’dan sonra ex yerine başka bir değişken tanımlayabiliriz veya bu şekilde bırakabiliriz.
catch’dan sonraki kodlar hata oluştuktan çalışır. Hata oluştuğu zaman mesaj
kutusunda hatanın adınında yazılmasını istiyorsak değiş[Link] kodunu kullanırız
(Burada değişken adını değiştirmediğim için [Link] olarak yazılacak).

Public Class Form1

Private Sub Button1_Click(sender As [Link], e As [Link]) Handles


[Link]
Try
[Link] = CInt([Link]) + CInt([Link])
Catch ex As Exception ‘ex yerine başka bir değişken adı yazılabilir.

MsgBox("Hata Oluştu : " & [Link])

End Try
End Sub
End Class

Sayfa 2 / 5
HATA YAKALAMA

Yukarıdaki örnek aşağıdaki şekilde de yazılabilir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As [Link])


Handles [Link]

Try
[Link] = CInt([Link]) + CInt([Link])
Catch ex As Exception
MsgBox([Link])
End Try

End Sub

finally bloğundaki kodlar hata olsada olmasada çalışır. Aşağıdaki örnekte yukarıdakinden
farklı olarak “Finally” bloğu da kullanılmıştır. Bu blokta Textbox1 ve Textbox2 metin
kutularının içeriği boşaltılmıştır. Metin kutularının içini boşaltmak için daha önce
gördüğümüz clear( ) metodunu da kullanabilirsiniz.

[Link]()
[Link]()

Public Class Form1

Private Sub Button1_Click(sender As [Link], e As [Link]) Handles


[Link]
Try
[Link] = CInt([Link]) + CInt([Link])
Catch ex As Exception
MsgBox("Hata Oluştu : " & [Link])
Finally
[Link] = ""
[Link] = ""
End Try
End Sub
End Class

Örnek

Girdi kutusundan bir veya iki basamaklı pozitif bir tamsayı girildiğinde bu sayıyı yazı olarak
çıktı kutusunda gösteren bir program yazınız.

Sayfa 3 / 5
HATA YAKALAMA
Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sayi, birler, onlar As Byte
Dim birlerYazi, OnlarYazi As String
Try
sayi = CInt(InputBox("0 - 99 arasında bir sayı giriniz"))
If sayi > 99 Then
MsgBox("lütfen aralığa dikkat ediniz")
Else

If sayi <> 0 Then

birler = sayi Mod 10


onlar = sayi \ 10

Select Case birler


Case 0
birlerYazi = ""
Case 1
birlerYazi = "Bir"
Case 2
birlerYazi = "İki"
Case 3
birlerYazi = "Üç"
Case 4
birlerYazi = "Dört"
Case 5
birlerYazi = "Beş"
Case 6
birlerYazi = "Altı"
Case 7
birlerYazi = "Yedi"
Case 8
birlerYazi = "Sekiz"
Case 9
birlerYazi = "Dokuz"

End Select

Select Case onlar


Case 0
OnlarYazi = ""
Case 1
OnlarYazi = "On"
Case 2
OnlarYazi = "Yirmi"
Case 3
OnlarYazi = "Otuz"
Case 4
OnlarYazi = "Kırk"
Case 5
OnlarYazi = "Elli"
Case 6
OnlarYazi = "Atmış"
Case 7
OnlarYazi = "Yetmiş"

Sayfa 4 / 5
HATA YAKALAMA
Case 8
OnlarYazi = "Seksen"
Case 9
OnlarYazi = "Doksan"

End Select
MsgBox(sayi & "= " & OnlarYazi & " " & birlerYazi)
Else
MsgBox(sayi & "= Sıfır")
End If
End If
Catch ex As Exception
MsgBox("lütfen aralığa dikkat ediniz")
End Try

End Sub
End Class

KAYNAKLAR

1. [Link] Programlama Dili Ahmet KAYMAZ Papatya Yayınları


2. Vsual Basic Memik YANIK Seçkin Yayınevi
3. Adım Adım Visual Basic 2008 Michael HALVORSON Arkadaş Yayınevi
4. Visual Basic .NET 2010 Volkan AKTAŞ Kodlab Yayınevi

Sayfa 5 / 5
İLETİŞİM PENCERELERİ (DIALOGS)

İLETİŞİM (DİALOG) PENCERELERİ


Kullanıcı ile iletişim kurmak için kullanılan pencerelerdir.

İNPUTBOX (GİRDİ PENCERESİ)

Kullanıcıdan bilgi almak için kullanılabilecek yöntemlerden biri girdi kutusu (inputbox) ile
girdi almaktır. İnputbox ile alınan girdi bir değişkene aktarılarak programda kullanılır.

Kullanım aşağıdaki gibidir:

Inputbox (“görüntülenecek olan mesaj”,”pencere başlığı”, “varsayılan mesaj”, x koordinatı, y


koordinatı)

Private Sub Button3_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
Dim n As Integer
n = InputBox("bir sayı girin", "başlık kısmı", 100,
30, 70)
End Sub

Soru: İnputbox ile vize ve final notu girilecektir. Başarı notunu hesaplayarak mesaj kutusu ile
görüntüleyen bir program yazınız.

Başarı notunu hesaplatmak için vize notunun %40’ı ile final notunun %60’ını toplatınız.

MSGBOX (MESAJ PENCERESİ)

Program içerisinde üretilen değerleri ekranda bir pencere vasıtasıyla gösterir.


Aşağıdaki şekilde kullanılır:

Tıklanan=Msgbox ([Link], [Link], [Link])


Msgbox hangi butona tıklandığını geriye getirir ve bunu tıklanan isimli değişkene aktarır.
Burada 1. Parametre görüntülenmek istenen değer, 2. Parametre ekranda görülmesi istenen
simge ve 3. Parametre ise başlıktır.

Not: değişken, 2. Parametre, [Link] seçimliktir. Yani msgbox aşağıdaki gibi


kullanılabilir.

Sayfa 1 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

Msgbox [Link].

Örnek1
Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

Dim degisken1 As String


Dim degisken2 As Integer

degisken1 = "MERHABA ARKADAŞLAR"


degisken2 = 100
MsgBox("MERHABA DÜNYA")
MsgBox(degisken1)
MsgBox(degisken2)

End Sub
End Class

Örnek 2

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
Dim secim As Integer
secim = MsgBox("değişiklikler kaydedilsin mi? ", 51,
"kaydetme")
End Sub
Yukarıdaki kodda verilen mesaj kutusu aşağıdaki şekilde görüntülenir.

Aynı örnek aşağıdaki gibi de yapılabilir

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]

Dim secim As Integer


secim = MsgBox("değişiklikler kaydedilsin mi? ",
[Link] + [Link], "kaydetme")
Sayfa 2 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

[Link] = secim

End Sub

Bu kodun sorunsuz çalışabilmesi için option strict ayarının off olarak ayarlanması gerekir.

Msgbox’a [Link] olarak verilen bilgi diyalog kutusunda mesaj olarak kullanılır. 2.
Parametre olarak kullanılan 51 aslında iki sayının toplamından meydana gelmektedir. Bu iki
sayıdan birincisi mesajdan önce küçük bir üçgen içinde verilen ünlem (!) işaretini temsil
ederken ikincisi diyalog kutusuna konulacak düğmeleri temsil etmektedir. 3. Parametre olarak
verilen bilgi diyalog kutusunun başlığında kullanılır.
Bu diyalog kutusu ekranda iken tıklanan düğmeyi temsil eden sayısal değer secim
değişkenine aktarılır. Diyalog kutusu kapandıktan sonra secim değişkeninin değeri kontrol
edilerek kullanıcının hangi düğmeyi tıkladığı öğrenilebilir ve buna göre işlem yaptırılabilir.

Tıklanan düğmeye göre msgbox’ın geriye gönderdiği bilgiler aşağıda tabloda verilmiştir.

Seçilen düğme Geriye gönderilen değer


Tamam - Okay 1
İptal - Cancel 2
Durdur - Abort 3
Yeniden - Retry 4
Yoksay - Ignore 5
Evet - Yes 6
Hayır - No 7

Msgbox ile ekrana getirilen diyalog kutusunda bulunması istenen düğmeleri temsil eden sayı
2. Parametrede verilmektedir. Aşağıdaki tablo hangi düğme için hangi değerin kullanılması
gerektiğini göstermektedir.

Sayısal değer Diyalog kutusuna konulan düğmeler


0 [Link] Tamam
1 [Link] Tamam ve İptal
2 [Link] Durdur, Yeniden Dene ve Yoksay
3 [Link] Evet, Hayır ve İptal
4 [Link] Evet ve Hayır
5 [Link] Yeniden Dene ve İptal Et

Yukarıda verilen örnekte 2. Parametre olarak 51 yerine 3 değerini kullanmış olsaydık diyalog
kutusunda yine Evet, Hayır ve İptal düğmeleri olurdu ancak ünlem işareti olmazdı.

Örnek 3:

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
Dim secim As Integer

Sayfa 3 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

secim = MsgBox("değişiklikler kaydedilsin mi? ", 3,


"kaydetme")
[Link] = secim
End Sub

Yukarıdaki örnek aşağıda verilen kodlarla da yapılabilir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]

Dim secim As Integer


secim = MsgBox("değişiklikler kaydedilsin mi? ",
[Link], "kaydetme")
[Link] = secim

End Sub

Aşağıda verilen tabloda sayısal değerler mesajın solunda kullanılacak olan simgeyi seçmeye
yarar. Hangi simgeyi kullanmak istiyorsanız, o simgeyi temsil eden sayı ile düğmeleri temsil
eden sayıları toplayıp bulunan sayısal değeri msgbox’a ikinci parametre olarak vermelisiniz.

Sayısal Değer msgboxstyle Simge


16 [Link]

32 [Link]

48 [Link]

64 [Link]

Bazen msgbox metodu ile kullanıcıya verilen mesaj birden fazla satıra bölündükten sonra
görüntülenmek istenir. Mesajı birden fazla satıra bölmek için satır başı ve satır sonu (bir alt
satıra geçme) karakterlerini kullanmak gerekir.

Sayfa 4 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
Dim sehirler As String
sehirler = "mersin" & Chr(13) & Chr(10)
sehirler = sehirler & "adana" & Chr(13) & Chr(10)
sehirler = sehirler & "istanbul" & Chr(13) & Chr(10)
sehirler = sehirler & "ankara" & Chr(13) & Chr(10)
MsgBox(sehirler)
End Sub

Chr(13) & Chr(10) Yerine Visual Basic sabiti olan vbCrLf kullanılabilir. Chr(13) Carriage
Return or CR karakterini temsil eder, Chr(10)ise Line Feed or LF karakterini temsil eder. LF
bir alt satıra inmeyi sağlar. CR ise satır başı yapar.

vbCrLf sabitini veya Chr(13) & Chr(10) kodlarını çok satırlı metin kutusunda da
kullanabilirsiniz

Örnek:

' The following example requires that Option Infer be set to On.

' Define the message you want to see inside the message box.
Dim msg = "Do you want to continue?"

' Display a simple message box.


MsgBox(msg)

' Define a title for the message box.


Dim title = "MsgBox Demonstration"

' Add the title to the display.


MsgBox(msg, , title)

' Now define a style for the message box. In this example, the
' message box will have Yes and No buttons, the default will be
' the No button, and a Critical Message icon will be present.
Dim style = [Link] Or MsgBoxStyle.DefaultButton2 Or
[Link]

Sayfa 5 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

' Display the message box and save the response, Yes or No.
Dim response = MsgBox(msg, style, title)

' Take some action based on the response.


If response = [Link] Then
MsgBox("YES, continue!!", , title)
Else
MsgBox("NO, stop!!", , title)
End If

FILE DIALOG (DOSYA İLETİŞİM) PENCERELERİ

File diyalog pencereleri Toolbox içerisinde Dialogs başlığı altında bulunur. ColorDialog,
FolderBrowserDialog, FontDialog, OpenFileDialog ve SaveFileDialog adlı diyalog
kontrolleri vardır.
Bir iletişim kutusu nesnesi oluşturduktan sonra, aşağıdakileri yaparak iletişim kutusunu
programda görüntüleyebilirsiniz:
 Gerekiyorsa, iletişim kutusunu açmadan önce bir ya da daha çok iletişim kutusu
özelliğini program kodunu kullanarak ayarlayın.
 Bir olay yordamına iletişim kutusunun adını ShowDialog yöntemini kullanarak yazın.
 İletişim kutusunu kullanıp kapattıktan sonra kullanıcının iletişim kutusu seçimlerine
yanıt vermek için program kodunu kullanın.

COLOR DIALOG
Renk seçmek için kullanılır.

Color Iletişim Kutusu Özellikleri.

AllowFullOpen: İletişim kutusundaki Özel Renk Tanımla (Define Custom Colors)düğmesini


etkinleştirmek için True Olarak ayarlanır.
FullOpen: İletişim Kutusu İlk açıldığında Custom Colors (Özel Renkler) alanını
görüntülemek için True olarak ayarlanır.

1. Örnek: bir formun rengini color dialog yardımıyla değiştirelim. Once color dialog
nesnesi ekleyelim. Bu nesne bileşen tepsisinde görünür. Form üzerine bir de buton
ekleyelim ve buton_click olayına aşağıdaki kodları yazalım.

Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
If [Link] = [Link] Then

Sayfa 6 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

[Link] = [Link]

End If
End Sub
End Class

Button1 butonuna tıklandığında aşağıda gösterilen ColorDialog1 penceresi açılacaktır. Burada


istenilen renk seçilir. Seçilen renk ColorDialog1 nesnesinin Color özelliğine aktarılır. Ve renk
girişi yapılması gereken yerlerde [Link] kodu yazılarak kullanılabilir.
Yukarıdaki örnekte formun arka plan rengi değiştirilmiştir.

OPEN FILE DIALOG

Bilgisayarda daha önceden kayıtlı olan dosyaları seçmek için kullanılır.

ÖZELLİKLER

FILENAME: Diyalog penceresindeki dosya adı bölümünde varsayılan olarak görüntülenecek


metni belirler. Seçilen dosyanın yolu, adı ve uzantısı bu özellikte saklanır.

FILTER: Diyalog penceresinde görüntülenecek olan dosya türlerini belirlemek için


kullanılır.

“ Dosya türü adı (*.dosya türü) | *.dosya türü | Dosya türü adı (*.dosya türü) | *.dosya türü “
şeklinde kullanılır.

Sayfa 7 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

Tırnak içindeki metnin ilk kısmı [Dosya türü adı (*.dosya türü)] Dosya Türü Kutusunda hangi
öğelerin listeleneceğini belirler. İkinci kısım [*.dosya türü] iletişim kutusunda listelenecek
dosyaların dosya adı uzantısını belirler.

TITLE: Diyalog penceresinin başlığında görüntülenecek olan yazıyı belirler.

INITIAL DIRECTORY: Diyalog penceresinde görüntülenecek olan varsayılan klasörü


belirler.

Ör:
2. Bir önceki örnekteki forma openfiledialog nesnesi ekleyelim. Bu nesne bileşen
tepsisinde görünür.
3. forma button2 ve picturebox1 nesnelerini ekleyelim.
4. Button2 nesnesi üzerinde “Resim Aç” yazsın.
5. picturebox nesnesinin SizeMode özelliğini StretchImage olarak ayarlayın.

Sayfa 8 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

Aşağıdaki kodu Aç düğmesi tıklandığında çalışan Button1_Click olay yordamı için giriniz.
Open iletişim kutusundaki dosya türünü tanımlamak için OpenFileDialog1 nesnesinin Filter
özelliğini kullanabilirsiniz. Daha sonra Open iletişim kutusunu görüntülemek için
ShowDialog yöntemini kullanın. Kullanıcı bir dosya seçip iletişim kutusunu kapattıktan
sonra, picturebox nesnesinin image özelliğini kullanıcının seçtiği dosya olarak ayarlayıp bu
dosyayı picturebox’ta görüntüler.

Private Sub Button1_Click(sender As [Link], e As


[Link]) Handles [Link]
[Link] = "Bitmaps (*.bmp)|*.bmp"
If [Link]() = [Link] Then
[Link] =
[Link]([Link])

End If

Veya

Private Sub Button1_Click(sender As [Link], e As


[Link]) Handles [Link]
[Link] = "dosya seç"

Sayfa 9 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

[Link] = "Bitmaps (*.bmp)|*.bmp| jpeg


dosyaları (*.jpeg)|*.jpg|Gif dosyaları (*.gif)|*.gif|PNG Dosyaları
(*.png)|*.png"
[Link] = "Lütfen Bir Dosya Seçiniz."
[Link] =
"C:\Users\Eskidemir\Desktop\ders2020\resimler2\Manzara"
If [Link]() = [Link] Then
[Link] =
[Link]([Link])

End If
[Link] = [Link]
End Sub

Yukarıdaki kodlardaki ilk üç ifade dosya açma iletişim kutusu nesnesinin üç farklı özelliğiyle
ilgilidir. İlk ifade geçerli bir dosya listesi tanımlamak için Filter özelliğini kullanır. Bu örnekte
listenin tek özelliği vardır: *.bmp. bu ifade, open (aç) iletişim kutusu için önemlidir, çünkü bir
resim kutusu nesnesi aşağıdaki dosya türlerini görüntüleyebilir.

 Bit eşlemler (.bmp dosyaları)


 Windows meta dosyaları (.emf, .wmf dosyaları)
 Simgeler (.ico dosyaları)
 Jpeg biçimi (.jpg ve .jpeg dosyaları)
 Portable Network Graphics biçimi (.png dosyaları)
 Graphics Interchange Format (.Gif dosyaları)

[Link] = "Bitmaps (*.bmp)|*.bmp"

Tırnak içindeki metnin ilk kısmı [Bitmaps (*.bmp)] Dosya Türü Kutusunda hangi öğelerin
listeleneceğini belirler. İkinci kısım [.bmp] iletişim kutusunda listelenecek dosyaların dosya
adı uzantısını belirler.

Filter listesine başka öğeler eklemek için öğeler arasına çubuk ( | ) simgesi koyabilirsiniz.
Örneğin, aşağıdaki program ifadesi, open iletişim kutusunda hem bit eşlem hem de Windows
meta dosyaları seçilebilmesini sağlar.

[Link] = "Bitmaps (*.bmp)|*.bmp|Metafiles


(*.wmf)|*.wmf"

Olay yordamındaki ikinci ifade, programda open (Aç) iletişim kutusunu görüntüler.
Showdialog metodu kullanıcının iletişim kutusunda tıkladığı düğmeyi belirten DialogResult
adlı bir sonuç verir. Kullanıcının aç düğmesini tıklayıp tıklamadığını belirlemek için verilen
sonucun [Link]’e eşit olduğunu denetlemek amacıyla if… then karar yapısı

Sayfa 10 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

kullanılır (Buradaki aç düğmesi form üzerindeki Aç düğmesi değil OpenFileDialog penceresi


açıldıktan sonra herhangi bir resim seçip tıkladığımız aç düğmesidir. Aç düğmesine tıklamak
yerine aynı işlem için açmak istediğiniz resmin üzerine çift tıklayabilirsiniz). Sonuç eşitse,
dosya açma iletişim kutusu nesnesinin FileName özelliğinde geçerli bir .bmp dosya yolu
depolanmalıdır.
Üçüncü ifade kullanıcının iletişim kutusunda seçtiği dosya adını kullanır. Kullanıcı sürücü,
klasör ve dosya adı seçip open düğmesini tıkladığında yolun tamamı
[Link] özelliği aracılığıyla programa aktarılır. Daha sonra resimleri
yükleyen bir yöntem olan [Link] yöntemi belirlenen resmi resim
kutusu nesnesine kopyalamak için kullanılır.

Aşağıdaki resimde form üzerindeki Aç adlı butona tıkladıktan sonra açılan OpenFileDialog
penceresine ait görüntü verilmiştir.

Aşağıdaki örneği de uygulayabilirsiniz. Bu durumda forma bir tane metin kutusu ekleyiniz.

Private Sub Button1_Click(sender As [Link], e As [Link]) Handles


[Link]
[Link] = "dosya seç"

[Link] = "Bitmaps (*.bmp)|*.bmp| jpeg dosyaları (*.jpeg)|*.jpg|Gif


dosyaları (*.gif)|*.gif|PNG Dosyaları (*.png)|*.png"

Sayfa 11 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

[Link] = "Lütfen Bir Dosya Seçiniz."


[Link] = "d:\resimler"
If [Link]() = [Link] Then
[Link] = [Link]([Link])

End If
[Link] = [Link]
End Sub

FOLDER BROWSER DIALOG


Klasör (dizin) seçmek amacı ile kullanılır.

Özellik ve Metotlar
selectedPath: Seçilen klasörün yolunu (path) tespit etmemizi sağlar.

ShowNewFolderButton: kullanıcının yeni klasör oluşturup oluşturamayacağını belirler.


Butonun gösterilip gösterilmeyeceğini belirler. True veya False değeri alır.
[Link] = False

Description özelliği: Başlıktaki yazıyı belirler


[Link] = "Lütfen bir dizin seçin."

Public Class Form1


Dim Secili_Klasaor_Yolu As String

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link]()
Secili_Klasaor_Yolu = [Link]
[Link] = Secili_Klasaor_Yolu

End Sub
End Class

Klasör seçilmediyse aşağıdaki kodu kullanarak seçilmediğinde farklı işlemler yaptırabiliriz.

Public Class Form1


Dim Secili_Klasaor_Yolu As String

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]

[Link] = False
[Link] = "Lütfen bir dizin seçin."

Sayfa 12 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
If ([Link]() = [Link]) Then
Secili_Klasaor_Yolu = [Link]
[Link] = Secili_Klasaor_Yolu
Else
[Link] = " Klasör Seçilmedi"
End If

End Sub
End Class

Örnek: seçilecek bir klasördeki .jpg dosyalarını listeleyecek bir program yazalım. Form
üzerine aşağıdaki şekilde gösterildiği gibi bir adet listbox, bir adet buton ve bir adet folder
dialog browser ekleyelim

Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
If [Link] = [Link] Then
Dim dosya As String
dosya = Dir([Link] & "\*.jpg")
While dosya <> ""
[Link](dosya)
dosya = Dir()

Sayfa 13 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
End While

End If
End Sub
End Class

Örnek: listboxta klasör içindeki uzantısı .jpg olan dosyalar görüntülensin ve bu dosyalardan
hangisi seçilirse picturebox’ta gösterilsin.

Public Class Form1


Dim Secili_Klasaor_Yolu As String

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles


[Link]
If [Link] = [Link] Then
Dim dosya As String
dosya = Dir([Link] & "\*.jpg")
While dosya <> ""
[Link](dosya)
dosya = Dir()

End While

End If
Secili_Klasaor_Yolu = [Link]
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles


[Link]
[Link] = Secili_Klasaor_Yolu & "\" & [Link]
End Sub

Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs)


Handles [Link]
[Link] = [Link](Secili_Klasaor_Yolu &
"\" & [Link])
End Sub

Sayfa 14 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

End Class

FONT DİALOG
Yazı tipi ile ilgili özellikleri ayarlamak için kullanılır.

Özellikler
Color: renk değerini ayarlamak için kullanılır.
Font: font değerlerini ayarlamak için kullanılır.
MaxSize: kullanıcını seçebileceği maksimum size değerini belirler.
MinSize: kullanıcını seçebileceği minimum size değerini belirler.
ShowApply: Uygula düğmesinin görünmesini sağlar.
showColor: Renk seçimi için açılır kutunun görünmesini sağlar.

Olaylar

Apply: uygula butonuna tıklandığında tetiklenir. Bu olayı kullanmak için önce uygula butonu
gösterilmelidir. Fontdialog nesnesine çift tıklayarak apply olayına ait olay alt programı açılır.

Örnek:
Private Sub Button2_Click(ByVal sender As [Link], ByVal e As [Link])
Handles [Link]
If ([Link] = [Link]) Then
[Link] = [Link]
[Link] = [Link]
End If

End Sub

Örnek

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As [Link])


Handles [Link]
Dim dlg As New FontDialog

If [Link] = [Link] Then


Dim fontName As String
Dim fontSize As Integer
fontName = [Link]
fontSize = [Link]

MsgBox(fontName & " " & fontSize)


End If
End Sub

Sayfa 15 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
End Class

Örnek

Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
If ([Link] = [Link]) Then
[Link] = [Link]
[Link] = [Link]
End If

End Sub

Private Sub FontDialog1_Apply(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = [Link]
[Link] = [Link]
End Sub
End Class

SAVE FILE DIALOG


Herhangi bir dosyayı kayıt etmek için kullanılır.

ÖZELLİKLER

FILENAME: Diyalog penceresindeki dosya adı bölümünde varsayılan olarak görüntülenecek


metni belirler. Seçilen dosyanın yolu, adı ve uzantısı bu özellikte saklanır.

Sayfa 16 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

FILTER: : Diyalog penceresinde görüntülenecek olan dosya türlerini belirlemek için


kullanılır.

“ Dosya türü adı (*.dosya türü) | *.dosya türü | Dosya türü adı (*.dosya türü) | *.dosya türü “
şeklinde kullanılır.

Tırnak içindeki metnin ilk kısmı [Dosya türü adı (*.dosya türü)] Dosya Türü Kutusunda hangi
öğelerin listeleneceğini belirler. İkinci kısım [*.dosya türü] iletişim kutusunda listelenecek
dosyaların dosya adı uzantısını belirler.

TITLE: Diyalog penceresinin başlığında görüntülenecek olan yazıyı belirler.

INITIAL DIRECTORY: Diyalog penceresinde görüntülenecek olan varsayılan klasörü


belirler.

DEFAULTEXT: Diyalog penceresinde görüntülenecek olan varsayılan dosya uzantısını


belirler.

Örnek:
OpenFileDialog ile seçilen bir resmi bir picturebox nesnesi içerisinde görüntüleyen ve
SaveFileDialog nesnesi ile bunu farklı bir isimle kaydeden bir uygulama yazalım.

Aşağıda iki farklı kod örneği gösterimiştir

1. Yöntem

Imports [Link]
Imports [Link]

Public Class Form1


Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = "dosya seç"

[Link] = "Bitmaps (*.bmp)|*.bmp| jpeg dosyaları


(*.jpeg)|*.jpg|Gif dosyaları (*.gif)|*.gif|PNG Dosyaları (*.png)|*.png"
[Link] = "Lütfen Bir Dosya Seçiniz."
[Link] = "d:\resimler\Hayvanlar"
If [Link]() = [Link] Then
[Link] =
[Link]([Link])

End If
[Link] = [Link]

End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim resim As Bitmap = [Link]
[Link] = "dosya seç"

Sayfa 17 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
[Link] = "Bitmaps (*.bmp)|*.bmp| jpeg dosyaları
(*.jpeg)|*.jpg|Gif dosyaları (*.gif)|*.gif|PNG Dosyaları (*.png)|*.png|ikon
dosyaları (*.ico)|*.ico|tiff dosyaları (*.tiff)|*.tiff"
[Link] = "Kaydetme Penceresi"
[Link] = "C:\Users\Pictures"
[Link] = "jpeg"

If [Link]() = [Link] Then


[Link]([Link], [Link])

Select Case
[Link]([Link] - 3, 3)
Case "bmp" : [Link]([Link], [Link])
Case "gif" : [Link]([Link], [Link])
Case "jpg" : [Link]([Link], [Link])
Case "png" : [Link]([Link], [Link])
Case "ico" : [Link]([Link], [Link])
Case "tiff" : [Link]([Link],
[Link])

End Select
End If

End Sub
End Class

2. Yöntem

Nesne Adı Özellik Özellik Değeri

Button1 Text Resim Seç


Name ResimSec

Picturebox1 Sizemode StretchImage

Button2 Text Kaydet


Name CmdKaydet

Imports [Link]
Imports [Link]
Public Class Form1

Sayfa 18 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

Private Sub resimsec_Click(sender As [Link], e As


[Link]) Handles [Link]

[Link] = "dosya seç"

[Link] = "Bitmaps (*.bmp)|*.bmp| jpeg


dosyaları (*.jpeg)|*.jpg|Gif dosyaları (*.gif)|*.gif|PNG Dosyaları
(*.png)|*.png"
[Link] = "Lütfen Bir Dosya Seçiniz."
[Link] = "C:\Users\Pictures"
[Link]()

End Sub

Private Sub OpenFileDialog1_FileOk(sender As Object, e As


[Link]) Handles
[Link]
Dim yol As String =
[Link]([Link])
Dim fs As [Link] = New
[Link](yol, [Link], [Link])
Dim resim As [Link] = New
[Link](fs, True)
[Link] = resim

End Sub

Private Sub cmdkaydet_Click(sender As [Link], e As


[Link]) Handles [Link]
Dim resim As Bitmap = [Link]
[Link] = "dosya seç"

[Link] = "Bitmaps (*.bmp)|*.bmp| jpeg


dosyaları (*.jpeg)|*.jpg|Gif dosyaları (*.gif)|*.gif|PNG Dosyaları
(*.png)|*.png|ikon dosyaları (*.ico)|*.ico|tiff dosyaları
(*.tiff)|*.tiff"
[Link] = "Kaydetme Penceresi"
[Link] = "C:\Users\Pictures"
[Link] = "jpeg"

If [Link]() = [Link] Then


[Link]([Link], [Link])

Sayfa 19 / 20
İLETİŞİM PENCERELERİ (DIALOGS)

Select Case
[Link]([Link] -
3, 3)
Case "bmp" : [Link]([Link],
[Link])
Case "gif" : [Link]([Link],
[Link])
Case "jpg" : [Link]([Link],
[Link])
Case "png" : [Link]([Link],
[Link])
Case "ico" : [Link]([Link],
[Link])
Case "tiff" : [Link]([Link],
[Link])

End Select
End If
End Sub
End Class

KAYNAKLAR

1. [Link] Programlama Dili Ahmet KAYMAZ Papatya Yayınları


2. Vsual Basic Memik YANIK Seçkin Yayınevi
3. Adım Adım Visual Basic 2008 Michael HALVORSON Arkadaş Yayınevi
4. Visual Basic .NET 2010 Volkan AKTAŞ Kodlab Yayınevi

Sayfa 20 / 20
ALT PROGRAMLAR (SUB ROUTİNES)

FONKSİYON (İŞLEV) YORDAMLARI YAZMAK


Fonksiyonlar değer döndüren metotlardır. Bir fonksiyon yordamı, function ifadesi ile End
Function ifadesi arasına yerleştirilmiş bir ifade grubudur. İşlevdeki ifadeler, metin işleme
girdiyi ele alma ya da bir sayısal değer hesaplama gibi anlamlı işler yaparlar. Program
içindeki bir işlevi, işlev adını ve değişkenleri programdaki bir ifadeye koyarak çalıştırırsınız,
yani çağırırsınız.
Değişkenler (arguments) işlevlerin çalışmasını sağlayan verilerdir ve parantez içerisinde
virgüllerle ayrılarak yazılırlar.
Modüller içinde bildirimi yapılan işlevler varsayılan ayar olarak genel (public) olurlar. Bu
sayede onları proje içindeki herhangi bir olay yordamında kullanabilirsiniz.
FONKSİYON SÖZDİZİMİ
Bir işlevin (fonksiyonun) temel sözdizimi aşağıdaki gibidir.
Function işlevAdı ([değişkenler]) as tür
İşlev ifadeleri
[return değer]
End function

İşlevadı fonksiyona verilen addır. Tür ise dönüş türünü belirtir. Bir tür belirtilmezse
varsayılan ayar olarak object türü döner.
Değişkenler: bunlara parametre de denir. İşlev içinde kullanılacak isteğe bağlı ve virgülle
ayrılmış bir değişkenler listesidir. Her değişkenin de belirli bir tür olarak bildirimi
yapılmalıdır. (Visual Basic, varsayılan ayar olarak her değişkene ByVal anahtar sözcüğünü
ekler. Bu işlem bu değişken aracılığıyla verilerin bir kopyasının işleve aktarılacağını ama
değişkenlerdeki hiçbir değişikliğin çağrılan yordama döndürülmeyeceğini belirtir.)
İşlev ifadeleri, işlevin yapacağı işi gerçekleştiren bir ifadeler bloğudur. Bir işlevdeki ilk
ifadeler genellikle işlevde kullanılacak yerel değişkenlerin bildirimini yaparlar, geriye kalan
ifadeler de işlevin yapacağı işi gerçekleştirirler.
Return ile, çağıran yordama işlev kod bloğunda ne zaman bir değer döndürüleceğini ve bu
değerin ne olacağını belirtebilirsiniz. Bir return ifadesi çalıştırıldığında, işlevden çıkılır ve
return ifadesinden sonra başka işlev ifadeleri varsa, bunlar çalıştırılmaz. (alternatif olarak,
değeri işlev adına atayarak çağıran yordama bir değer döndürebilirsiniz.)
Köşeli parantezler isteğe bağlı öğeler için kullanılır.

Örnek:
Aşağıdaki fonksiyon ötv ve kdv vergilerini hesaplar
Public Class Form1

Sayfa 1 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Private Sub Button1_Click(sender As [Link], e As [Link]) Handles


[Link]

[Link] = toplamVergi(100000)
[Link] = toplamVergi(200000)
[Link] = toplamVergi(300000)
End Sub
End Class

Module Module1
Function toplamVergi(ByVal fiyat As Single) As Single
Dim ötv, kdv As Single
ötv = fiyat * 0.37
fiyat = fiyat + ötv
kdv = fiyat * 0.18
fiyat = fiyat + kdv
Return fiyat

End Function
End Module

Fonksiyonu alternatif olarak aşağıdaki gibi kullanabilirsiniz

Module Module1
Function toplamVergi(ByVal fiyat As Single) As Single
Dim ötv, kdv As Single
ötv = fiyat * 0.37
fiyat = fiyat + ötv
kdv = fiyat * 0.18
fiyat = fiyat + kdv
toplamVergi = fiyat

End Function
End Module

Örnek:
Module Module1

Function FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer


' local variable declaration */
Dim result As Integer

If (num1 > num2) Then


result = num1

Sayfa 2 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Else
result = num2
End If
FindMax = result
End Function

End Module

Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sayi1, sayi2, res As Integer

sayi1 = CInt(InputBox(" 1. sayıyı giriniz"))


sayi2 = CInt(InputBox(" 2. sayıyı giriniz"))
res = FindMax(sayi1, sayi2)
[Link] = res

End Sub
End Class

Örnek:
Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim basariNotu As Byte
Dim harfNotu As String
basariNotu = CByte(InputBox("Başarı Notunu Giriniz"))
harfNotu = HarfNotuHesapla(basariNotu)
MsgBox("harf notunuz: " & harfNotu)

End Sub
Function HarfNotuHesapla(ByVal bn As Byte) As String
Dim harf As String
Select Case bn
Case 0 To 24
harf = "FF"
Case 25 To 39
harf = "FD"
Case 40 To 44
harf = "DD"
Case 45 To 49

Sayfa 3 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

harf = "DC"
Case 50 To 56
harf = "CC"
Case 57 To 64
harf = "CB"
Case 65 To 75
harf = "BB"
Case 76 To 87
harf = "BA"
Case 88 To 100
harf = "AA"
Case 0 To 24
harf = "FF"
Case 0 To 24
harf = "FF"
Case 0 To 24
harf = "FF"

End Select
Return harf
End Function
End Class

Şanslı yedi oyununu tekrar açalım

Bir modül oluşturun ve aşağıdaki kodu yazın.

Module Module1
Public wins As Short
End Module

Çevir düğmesini çift tıklayalım. Button1_click olay yordamında Beep() ifadesinin altına
aşağıdaki ifadeleri yazın.

wins = wins + 1
[Link] = "Kazanma: " & wins

Şanslı yedi etiketinin altına yeni bir label ekleyelim ve yeni etiket için aşağıdaki tabloda
gösterilen özellikleri ayarlayalım

Sayfa 4 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Nesne Adı Özellik Özellik Değeri

Label5 Font Arial, 12nk, Bold, İtalic


ForeColor Green
Text Wins: 0
Name lblWins
TextAlign Middlecenter

Label6 Font Arial, 12nk, Bold, İtalic


ForeColor Red
Text “%0,0”
Name lblRate
TextAlign Middlecenter

[Link] modülünü tekrar açın. Çevirme sayısını izlemek için aşağıdaki şekilde spins adlı
değişken oluşturalım.
“Public wins as short” ifadesinin altına “Public spins As Short” yazın.

Modüle aşağıdaki fonksiyonu oluşturalım.

Public wins,spins As Short

Function kazanmaorani(ByVal hits As Short, ByVal tries As Short) As String


Dim yuzde As Single
yuzde = hits / tries
Return Format(yuzde, "%0.0")
End Function

Button1_click yordamına son satırına aşağıdaki ifadeyi yazın.

[Link] = kazanmaorani(wins, spins)

Load yordamındaki randomize ifadesini ‘ (üst tırnağı) kullanarak açıklama haline getirin.

Programı çalıştırın ve sonucu izleyin. İlk 5 tıklamada sonuç %100 olur. Tıklamaya devam

Sayfa 5 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

ettiğinizde azalır. 10. Tıklamada %60 olur.


Tüm kodlar aşağıdadır:

Public Class Form1

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As [Link])


Handles [Link]
End
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As [Link])


Handles [Link]
[Link] = False 'resim gizlenir
[Link] = CStr(Int(Rnd() * 10))
[Link] = CStr(Int(Rnd() * 10))
[Link] = CStr(Int(Rnd() * 10))
spins = spins + 1

If [Link] = "7" Or [Link] = "7" Or [Link] = "7" Then


[Link] = True
Beep()
wins = wins + 1
[Link] = "Kazanma: " & wins

End If
[Link] = kazanmaorani(wins, spins)

End Sub

Private Sub Form1_Load(ByVal sender As [Link], ByVal e As [Link])


Handles [Link]
Randomize()
End Sub
End Class

FONKSİYONLARDA VARSAYILANPARAMETRE KULLANIMI

Fonksiyonlarda da varsayılan parametre Sub Metotlarda olduğu gibi kullanılır. Zorunlu


olmayan parametreler optional olarak tanımlanır. Optional olarak tanımlanan parametre diğer
parametrelerden sonra ve ilk değeri verilerek tanımlanmak zorundadır.

Örnek

Aşağıdaki örnekte öğretim elemanı en az bir vize ve bir final yapacaktır. Uygulama sınavı
yapmak ise seçimliktir. Eğer uygulama sınavı yapılmayacaksa Textbox2 adlı metin kutusuna

Sayfa 6 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

not girilmeyecektir. Butona tıklandığında başarı notu hesaplanacaktır. Başarı notu formülü
aşağıda verilmiştir:

Eğer uygulama sınavı yapılmışsa

Başarı notu; Vize’nin %20’si, Uygulama’nın %20’si ve Final’in %60’ı toplanarak bulunur.

Eğer uygulama sınavı yapılmamışsa

Başarı notu; Vize’nin %40’ı ile Final’in %60’ı toplanarak bulunur.

Public Class Form1

Private Sub Form1_Load(ByVal sender As [Link], ByVal e As [Link])


Handles [Link]
[Link] = "VİZE NOTU"
[Link] = "UYGULAMA NOTU"
[Link] = "FİNAL NOTU"

End Sub

Function ortalama(ByVal v1 As Byte, ByVal f As Byte, Optional ByVal v2 As Byte = 255)


As Byte
Dim ort As Byte
If v2 = 255 Then
ort = [Link](v1 * 40 / 100 + f * 60 / 100, 0)
Else
ort = [Link]((v1 * 20 / 100 + v2 * 20 / 100 + f * 60 / 100), 0)
End If
Return ort
Sayfa 7 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

End Function

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim vize, uygulama, final, bn As Byte
vize = CInt([Link])

final = CInt([Link])

If [Link] <> "" Then


uygulama = CInt([Link])
bn = ortalama(vize, final, uygulama)
Else
bn = ortalama(vize, final)

End If
MsgBox("Başarı notu= " & bn)
End Sub
End Class

ByValue (ByVal) ve ByReferences (ByRef)


parametreler aktarılırken değer ve referans yöntemleri kullanılabilir. Eğer ByVal ifadesi
kullanılırsa (değer aktarımı), ilgili argüman’ın kopyası altprograma aktarılır. Çağrılan yerdeki
değer değişmez. Eğer ByRef (referans) ifadesi kullanılırsa, ilgili argüman’ın adresi
altprograma aktarılır. Bu gönderilen değerin gönderilen yerde de değişebileceği anlamına
gelir.

Public Class Form1


Sub artir(ByRef sayi As Integer)
sayi = sayi + 1

End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim x As Integer = 3
MsgBox("x= " & x)
artir(x)
MsgBox("x= " & x)
End Sub
End Class

Sayfa 8 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

örnek

Public Class Form1


Sub Abc(ByRef x As Integer)
x = 13
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
Dim Sayi As Integer
Sayi = 10
Abc(Sayi)
MsgBox(Sayi)
End Sub
End Class

Public Class Form1


Sub Abc(ByVal x As Integer)
x = 13
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
Dim Sayi As Integer
Sayi = 10
Abc(Sayi)
MsgBox(Sayi)
End Sub
End Class

METODLARIN AŞIRI YÜKLEMESİ (OVERLOADİNG)


Birden fazla metoda aynı isim verilebilir. Ancak aynı isimdeki metodların parametreleri farklı
olmalıdır ya da aynı isimde parametreleri varsa tipleri farklı olmalıdır. Bu işleme metodların
aşırı yüklenmesi (overloading) adı verilir.

Örnek daha önce yaptığımız ortalama hesabı örneğini overloading ile yapalım.

Aşağıdaki örnekte öğretim elemanı en az bir vize ve bir final yapacaktır. Uygulama sınavı
yapmak ise seçimliktir. Eğer uygulama sınavı yapılmayacaksa Textbox2 adlı metin kutusuna
not girilmeyecektir. Butona tıklandığında başarı notu hesaplanacaktır. Başarı notu formülü
aşağıda verilmiştir:

Sayfa 9 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Eğer uygulama sınavı yapılmışsa

Başarı notu; Vize’nin %20’si, Uygulama’nın %20’si ve Final’in %60’ı toplanarak bulunur.

Eğer uygulama sınavı yapılmamışsa

Başarı notu; Vize’nin %40’ı ile Final’in %60’ı toplanarak bulunur.

Public Class Form1

Private Sub Form1_Load(ByVal sender As [Link], ByVal e As [Link])


Handles [Link]
[Link] = "VİZE NOTU"
[Link] = "UYGULAMA NOTU"
[Link] = "FİNAL NOTU"

End Sub

Function ortalama(ByVal v1 As Byte, ByVal f As Byte, ByVal v2 As Byte) As Byte


Dim ort As Byte

ort = [Link]((v1 * 20 / 100 + v2 * 20 / 100 + f * 60 / 100), 0)

Return ort

End Function
Function ortalama(ByVal v1 As Byte, ByVal f As Byte) As Byte
Dim ort As Byte

ort = [Link]((v1 * 40 / 100 + f * 60 / 100), 0)

Return ort

End Function

Sayfa 10 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
Dim vize, uygulama, final, bn As Byte
vize = CInt([Link])

final = CInt([Link])

If [Link] <> "" Then


uygulama = CInt([Link])
bn = ortalama(vize, final, uygulama)
Else
bn = ortalama(vize, final)

End If
MsgBox("Başarı notu= " & bn)
MsgBox(ortalama(50, 70, 60))
MsgBox(ortalama(50, 60))

End Sub
End Class

Sayfa 11 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

ALTPROGRAMLAR
Yapısal programlama tekniğinde, tek bir bütün olarak çözüm getirilmesi zor olan programlar,
daha küçük ve üstesinden daha kolay gelinebilecek parçalara bölünürler. Bu parçalar alt
program olarak isimlendirilir.
Daha önce yaptığımız çalışmalarda olayları yönetmek ve programın akışını düzenlemek için
Button1_click, Form1_Load gibi olay yordamlarını kullandık. VB programlamada, tüm
çalıştırılabilir ifadelerin bir yordam içine yerleştirilmesi gerekir. Yalnızca derleyici için
yazılan genel bildirimler ve yönergeler bir yordamın dışında bulunabilir
Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.
Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra
birleştirmektir.
Böylece çok büyük boyutlardaki program kodlarını yönetmek daha kolay olacaktır.

Altprogramların Avantajları

 Alt programlar kodu küçültür. Çok tekrarlanan işlemlerin alt programlar kullanılarak
yazılması çalışabilir programın kodunu küçültür. Çünkü alt programlar yalnızca bir
kere çalışabilir kod içine yazılırlar. Ana program kodu alt programın olduğu yere
atlatılarak bu bölgenin defalarca çalıştırılması sağlanabilir.

 Alt programlama algılamayı kolaylaştırır, okunabilirliği artırır.

 Alt programlama kaynak kodun test edilebilirliğini artırır.

 Kaynak kodun daha kolay güncelleştirilmesi ve yeniden kullanılabilme olanağını


artırır.

 Program geliştirmeyi kolaylaştırır. Mantıksal birimlere ayrılmış programların


tasarlanması, yazılması ve hatalarının ayıklanması daha kolaydır.

 Alt programlamanın en önemli avantajlarından biri de genel amaçlı kodlar yazarak bu


yazılan kodları birden fazla projede kullanabilmektir.
ALTPROGRAM TÜRLERİ
Visual Basic’te iki temel altprogram türü vardır.
1. Fonksiyonlar (Functions): Fonksiyonlar olay yordamlarından veya diğer yordamlardan
adlarıyla çağrılırlar. Fonksiyonlar çoğu zaman hesaplamalar için kullanılırlar,
bağımsız değişken alabilirler ve her zaman işlev adı içinde değer döndürürler.
2. Sub yordamlar (Sub routines) Bunlara prosedür’de (procedure) denir. Olay
yordamlarından veya diğer yordamlardan adlarıyla çağrılırlar. Sub yordamlar da
bağımsız değişkenler alabilirler ve bağımsız değişken listesindeki değiştirilmiş
değerleri aktarabilirler. Ancak, fonksiyonlardan farklı olarak sub yordamları, belirli
sub yordamların adlarıyla ilişkili değerler döndürmezler sub yordamları genellikle
girdi almak ve işlemek, çıktı görüntülemek ve özellik ayarlamak için kullanılır.

Sayfa 1 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Fonksiyonlar ve sub yordamlar bir formun program kodunda tanımlanabilir ama yordamların
tüm projeyi kapsamaları için bir modül içinde oluşturulmaları en kullanışlı yoldur. Bu genel
amaçlı yordamlar olarak adlandırılabilecek ve çeşitli programlama işleri kapsamında
kullanılması yeterince esnek ve yararlı olan kod blokları için özellikle önemlidir.

SUB YORDAMLAR
Sub yordamları, function yordamlarına benzerler, farkları function yordamları gibi adlarıyla
ilişkili değer döndürmemeleridir. Sub Yordamları genellikle, kullanıcıdan girdi almak,
bilgileri görüntülemek ve yazdırmak veya bir koşulla ilişkili çeşitli özellikleri denetlemek için
kullanılırlar. Uygulama içerisinde bir kez yazacağımız kodu tekrar yazmaya gerek kalmadan
ismi ile çağırarak kullanabiliriz.

SUB YORDAM SÖZDİZİMİ


Bir sub yordamın temel sözdizimi aşağıdaki gibidir.
Sub yordamadı ([değişkenler])
Yordam ifadeleri
End Sub
Yordamadı oluşturacağınız sub yordamın adıdır.
Yordam ifadeleri, Yordamın yapacağı işi gerçekleştiren bir ifadeler bloğudur. Bir
Yordamdaki ilk ifadeler genellikle Yordamda kullanılacak yerel değişkenlerin bildirimini
yaparlar, geriye kalan ifadeler de Yordamın yapacağı işi gerçekleştirirler.
Köşeli parantezler isteğe bağlı öğeler için kullanılır.

Örnek
Public Class Form1
Sub KaresiniAl()
Dim b As Integer
Dim a As Integer = InputBox("Karesi alinacak sayiyi gir")
b=a*a
MsgBox(a & " Karesi: " & b)
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
KaresiniAl()
End Sub
End Class

Sayfa 2 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Örnek

Public Class Form1


Sub renk_degistir()
For Each nesne As Control In [Link]
If TypeOf (nesne) Is TextBox Then
[Link] = ""
[Link] = [Link]
[Link] = [Link]

End If

Next
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
renk_degistir()

End Sub
End Class

Parametre Kullanımı
Yordam içinde kullanılacak isteğe bağlı ve virgülle ayrılmış bir değişkenler listesidir. Her
değişkenin de belirli bir tür olarak bildirimi yapılmalıdır. (Visual Basic, varsayılan ayar olarak
her bağımsız değişkene ByVal anahtar sözcüğünü ekler. Bu işlem bu bağımsız değişken
aracılığıyla verilerin bir kopyasının yordama aktarılacağını ama bağımsız değişkenlerdeki
hiçbir değişikliğin çağrılan yordama döndürülmeyeceğini belirtir.)
Bir sub yordamı çağrısında yordama gönderilen değişkenlerin sayılarının ve türlerinin, sub
yordamı bildirimindeki değişkenlerinin sayıları ve türleri ile eşleşmesi ve grubun tamamının
parantez içerisine alınması gerekir. Bir sub yordamına aktarılan değişkenler, yordamda
değiştirilirse, bu güncelleştirilmiş değişkenler, yordam değişkenleri ByRef anahtar sözcüğünü
kullanarak tanımlanmadığı sürece programa geri aktarılmaz.

Örnek
Public Class Form1
Sub KaresiniAl(ByVal sayi As Integer)
Dim kare As Integer
kare = sayi * sayi
[Link](sayi & " sayisinin karesi: " & kare)
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
KaresiniAl(3)

Sayfa 3 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

End Sub
End Class

Örnek

Public Class Form1


Sub KaresiniAl(ByVal sayi As Integer)
Dim kare As Integer
kare = sayi * sayi
[Link](sayi & " sayisinin karesi: " & kare)
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
Dim x As Integer
x = CInt([Link])
KaresiniAl(x)
End Sub
End Class

Örnek:
Module Module1
Sub kutlama(ByVal kisi As String)
Dim msg As String
If kisi <> "" Then
msg = "Doğum Günün Kutlu Olsun " & kisi & "!"
MsgBox(msg, , "İyi Dileklerimizle")
Else
MsgBox("isim belirtilmemiş")
End If

End Sub

End Module

Private Sub Button1_Click(sender As [Link], e As [Link]) Handles


[Link]
Dim yeniad As String
Do
yeniad = InputBox("Yeni bir ad girin", "Doğum Günü Listesi")
kutlama(yeniad)
Loop Until yeniad = ""
End Sub

Sayfa 4 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Örnek:
Public Class Form1
Sub renk_degistir(ByVal nesne As Control)

If TypeOf (nesne) Is TextBox Then


[Link] = ""
[Link] = [Link]
[Link] = [Link]
ElseIf TypeOf (nesne) Is Label Then
[Link] = [Link]
[Link] = [Link]

ElseIf TypeOf (nesne) Is Button Then


[Link] = [Link]
[Link] = [Link]

End If

End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = "tarsus"
[Link] = "mersin"
[Link] = "meraba"
renk_degistir(TextBox1)
renk_degistir(Button2)

End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
renk_degistir(Label2)
End Sub
End Class

Örnek:
Sub yordamları genellikle, bir programda iki ya da daha çok kaynaktan gelen ve aynı biçimde
olması gereken girdileri işlemek için kullanılır.

Sayfa 5 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Nesne Adı Özellik Özellik Değeri

Label1 Font Bold


Text Satış
Name lblsatis

Label2 Font Bold


Text Pazarlama
Name lblpazarlama

Texbox1 Multiline True


Name Txtsatis
ReadOnly True
ScrollBars Vertical
Tabstop False

Texbox2 Multiline True


Name Txtpazarlama
ReadOnly True
ScrollBars Vertical

Sayfa 6 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Tabstop False

Button1 Name Btnsatis


Text Ad Ekle

Button2 Name Btnpazarlama


Text Ad Ekle

Button3 Name Btncıkıs


Text Çıkış

Form1 Text Bölüm Personeli Ata

Module Module1
Sub adekle(ByVal team As String, ByRef returnstring As String)
Dim prompt, nm, wrapcharacter As String
prompt = "Bir" & team & "Çalışanı Giriniz"
nm = InputBox(prompt, "Girdi Kutusu")
wrapcharacter = Chr(13) + Chr(10) 'vbcrlf veya vbnewline
'wrapcharacter = vbCrLf
'wrapcharacter = vbNewLine

returnstring = nm & wrapcharacter

End Sub
End Module

Public Class Form1

Private Sub btnsatis_Click(sender As [Link], e As [Link]) Handles


[Link]
Dim satispozisyon As String = ""
adekle("Satış", satispozisyon)
[Link] = [Link] & satispozisyon

End Sub

Private Sub btnpazarlama_Click(sender As [Link], e As [Link])


Handles [Link]
Dim pazarlamapozisyon As String = ""
adekle("pazarlama", pazarlamapozisyon)
[Link] = [Link] & pazarlamapozisyon

End Sub

Sayfa 7 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

Private Sub btncikis_Click(sender As [Link], e As [Link]) Handles


[Link]
End
End Sub
End Class

Varsayılan (Default) Parametre


Daha önce yaptığımız örneklerde parametrelerin kullanımı zorunludur. Optional ifadesi ile
parametreleri zorunlu olmaktan çıkarabiliriz. Bu durumda parametreler için varsayılan değer
geçerli olur.

Örnek

Public Class Form1


Sub KaresiniAl(Optional ByVal sayi As Integer = 5)
Dim kare As Integer
kare = sayi * sayi
[Link](sayi & " sayisinin karesi: " & kare)
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
KaresiniAl(3)
KaresiniAl(4)
KaresiniAl(6)
KaresiniAl()
End Sub
End Class

Örnek
Public Class Form1
Sub islem(ByVal x As Integer, ByVal y As Integer, Optional ByVal sayi As Integer = 5)
Dim sonuc As Integer
sonuc = sayi * sayi + x ^ 3 - y
[Link]("Sonuç: " & sonuc)
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
islem(3, 2)

Sayfa 8 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

islem(3, 2, 10)
islem(3, 2, 11)
islem(3, 2, 4)
End Sub
End Class

Not: optional parametreden sonra normal parametre kullanmayınız. Birden fazla optional
parametre varsa ve öndeki parametre kullanılmayacaksa iki virgül kullanılmalıdır (,,)
Sub islem(Optional ByVal sayi As Integer = 5,ByVal x As Integer, ByVal y As Integer, )

Yukarıdaki tanımlama hatalıdır.


ornek
Public Class Form1
Sub islem(ByVal x As Integer, Optional ByVal y As Integer = 2, Optional ByVal sayi As
Integer = 5)
Dim sonuc As Integer
sonuc = sayi + x - y
[Link]("Sonuç: " & sonuc)
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
islem(3, 4) '4
islem(3, , 10) '11
islem(3, 4, 11) '10
islem(3) '6
End Sub
End Class

Örnek
Public Class Form1
Sub renk_degistir(ByVal nesne As Control, Optional ByVal metin As String = "TARSUS
ÜNİVERSİTESİ")

If TypeOf (nesne) Is TextBox Then


[Link] = ""
[Link] = [Link]
[Link] = [Link]
ElseIf TypeOf (nesne) Is Label Then
[Link] = [Link]
[Link] = [Link]

Sayfa 9 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

End If

[Link] = metin
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = "tarsus"
[Link] = "mersin"
[Link] = "meraba"
renk_degistir(TextBox1, "MERSİN ÜNİVERSİTESİ")

End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
renk_degistir(Label2)
End Sub

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
renk_degistir(TextBox1)
End Sub

Private Sub Button4_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
renk_degistir(Label2, "ÇUKUROVA ÜNİVERSİTESİ")
End Sub
End Class

ParamArray
paramArray parametre sayısının belli olmadığı durumlarda kullanılır.
Örnek: form üzerindeki butonları pasif yapacak bir metot oluşturalım.

Public Class Form1


Sub pasifButon(ByVal x As Boolean, ByVal ParamArray btn() As Button)
Dim i As Integer
If x = True Then
For i = 0 To [Link] - 1
btn(i).Enabled = False

Next
End If

Sayfa 10 / 11
ALT PROGRAMLAR (SUB ROUTİNES)

End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim y As Boolean
Dim i As Integer

i = MsgBox("Butonlar pasif duruma getirilsin mi?", [Link])


If i = 6 Then y = True Else y = False

pasifButon(y, Button2, Button3, Button4)


End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
MsgBox("merhaba button2")

End Sub

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
MsgBox("merhaba button3")
End Sub

Private Sub Button4_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
MsgBox("merhaba button4")
End Sub
End Class

Sayfa 11 / 11
KONTROLLER - II

LİSTE KUTULARI (LİST BOX)

Liste kutusu (Listbox) denetimi, öğeleri bir kutu içerisinde listeleyerek kullanıcının bir veya
daha fazla öğe seçebilmesini sağlar. Listelenecek öğeler kutu içerisine sığmayacak kadar fazla
olduğunda kutu içerisinde otomatik olarak kaydırma çubuğu gösterilir.

ÖZELLİKLER
Backcolor
Borderstyle
Cursor
Dock
Enabled
Font
Name
Forecolor
Locations
Locked
Maximumsize
Minimumsize
Size
Visible

İtems: liste kutularında gösterilecek öğeleri belirlemek için kullanılır. Özelliğin yanındaki
düğme tıklandığında öğelerin hazırlanacağı koleksiyon editörü açılır. Her öğe bir satıra
gelecek şekilde öğe elemanları yazılmalıdır.

İtem: index numarası verilen elemanın adını verir.

MsgBox([Link](2))

Multicolumn: Liste kutusunda gösterilecek öğelerin birden fazla sütun şeklinde


listelenmesini sağlar.

Columnwidth: Birden fazla sütun seçilebildiğinde (multicolumn özelliği True yapıldığında),


iki sütunun genişliğinin ayarlanmasını sağlar.

Sayfa 1 / 9
KONTROLLER - II

Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
Dim i, j As Integer
[Link] = 640
[Link] = 70
i = 1
j = 1

While i <= 5
While j <= 5
[Link](i & "X" & j & "=" & i * j)
j = j + 1
End While
j = 1
i = i + 1
End While

End Sub

End Class

Sorted: liste kutusundaki öğelerin alfabetik olarak sıralı gösterilmesini sağlar.

ScrollAlwaysVisible: Liste kutusunda gösterilecek öğelerin sayısına bakılmaksızın, kaydırma


çubuğunun sürekli görünmesini sağlar.

selectionMode: Liste kutusundaki öğelerin ne şekilde seçileceğinin belirtilmesini sağlar.


Özelliğin değeri none seçildiğinde, liste kutusundan öğe seçimi yapılamaz. One seçildiğinde
sadece bir öğe seçilebilir. Multisimple seçildiğinde, fare ile her tıklamada bir öğe seçilir.
Seçili öğe tekrar tıklandığında seçim iptal edilir. Multiextended seçildiğinde, Ctrl veya Shift
tuşlarına basılarak fare ile her tıklamada bir veya daha fazla öğe seçilir.

Sayfa 2 / 9
KONTROLLER - II

Selectedindex: Liste kutusundaki öğelerin her birinin bir indeks numarası vardır. İlk öğenin
indeks numarası sıfırdır. Aktif (seçili) öğenin indeks numarası bu özellik ile öğrenilir. Eğer
hiçbir öğe seçili değilse özelliğin değeri -1 olur.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Selecteditem: Seçili öğenin adını verir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
[Link] = [Link]
End Sub

Text: liste kutusundan seçilen metni belirler.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

[Link]: seçilen öğe sayısını verir.

Selecteditems(): seçilen elemanları verir.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
Dim i, a As Integer
a = [Link] - 1
For i = 0 To a
MsgBox([Link](i))

Next i
End Sub

Selectedindices: Seçilen elemanların indis numaralarını verir

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim i, a As Integer
a = [Link] - 1
For i = 0 To a
MsgBox([Link](i))
Next i

End Sub

Sayfa 3 / 9
KONTROLLER - II

OLAYLAR

Selectedindexchanged: liste kutusundan bir eleman seçildiğinde meydana gelir.

METOTLAR

Add Metodu: Bu metod liste kutusuna eleman yerleştirmek için kullanılır. Eleman
yerleştirme işlemi tasarım zamanında (design time) veya çalıştırma zamanında (run time)
düzenlenebilir. Tasarım zamanında kutuya eklenen elemanlar uygulama çalıştırıldığında
otomatik olarak yer alacaktır. Ancak kullanıcının da liste kutusuna eleman ekleyebilmesi
çalışma zamanında Add Metodu ile olur.

[Link](“Ortaöğretim”)
[Link](“Lise”)
[Link](“Lisans Eğitimi”)
[Link](degisken)
[Link]([Link])

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim degisken As String
degisken = InputBox("bir yazı lütfen")
[Link]("Ortaöğretim")
[Link]("Lise")
[Link]("Lisans Eğitimi")
[Link](degisken)
[Link]([Link])

End Sub

Removeat Metodu: Removeat metodu liste kutusu içerisindeki bir elemanın kutudan
silinmesini sağlar. Silme işlemleri kutu içindeki elemanın index değerine göre yapılır.
Örneğin;

listbox1. İ[Link](2)

Dizilimi kutu içindeki 2 index değerine sahip (baştan üçüncü) elemanı siler.

Remove Metodu: iste kutusu içerisindeki bir elemanın kutudan silinmesini sağlar. Silme
işlemleri kutu içindeki elemanın ismine göre yapılır. Örneğin;

[Link](“Ankara”)

Clear Metodu: Veri listesini silmek için kullanılır


[Link]()

Sayfa 4 / 9
KONTROLLER - II

Findstring: Belirtilen metni liste kutusu içerisinde arar ve bulduğu ilk öğenin dizin
numarasını verir. Tam eşleşme gerektirmez.

Private Sub Button5_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = [Link]([Link])

End Sub

Findstringexact: Belirtilen metni liste kutusu içerisinde arar ve tam olarak eşleşen öğenin
dizin numarasını verir.

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim degisken As String
degisken = InputBox("bir yazı lütfen")
[Link]("Ortaöğretim")
[Link]("Lise")
[Link]("Lisans Eğitimi")
[Link](degisken)
[Link]([Link])

End Sub
Private Sub Button7_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = [Link]("Ortaöğretim")

End Sub

Private Sub Button8_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link] = [Link]("Orta")
End Sub

Count: Liste kutusundaki eleman sayısını verir.

Private Sub Button9_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = [Link]

End Sub

Sayfa 5 / 9
KONTROLLER - II

ListBoxSoru1:
: Load Prosedüründe aşağıdaki elemanları Liste kutusuna ekleyen bir program yazın

ListBoxSoru2: Butona tıklanınca Listbox1’den seçilen elemanı text1’e yazan bir program
yazın

ListBoxSoru3: Listbox1’den seçilen elemanı direkt (hiçbir butona tıklamadan, seçilir


seçilmez) textbox1’e yazan bir program yazın

ListBoxSoru4: ekle isimli butona tıklanıncaText1’e yazılan eleman Listbox1’e eklensin,


Tümünü sil isimli butona tıklanınca da Listbox1’deki tüm elemanlar silinsin

Sayfa 6 / 9
KONTROLLER - II

ListBoxSoru5: Sil isimli butona tıklanınca Liste numarası Textbox1’e yazılmış olan eleman
Listbox1’den silinsin.

ListBoxSoru6: Sil isimli butona tıklanınca adı Textbox1’e yazılmış olan eleman listbox1’den
silinsin.

ListBoxSoru7: button1’e tıklanınca Listbox1’de bulunan elemanlardan, Textbox2’ye Liste


numarası yazılan eleman Textbox1’e yazılsın

Sayfa 7 / 9
KONTROLLER - II

ListBoxSoru8: Button1’e tıklanınca Listbox1 deki aktif elemanın index değeri text2 ye
yazılsın

ListBoxSoru9: Sil isimli butona tıklanınca Listbox1’de seçilen eleman silinsin

ListBoxSoru10: Button1’ tıklanınca listbox’1in eleman sayısı textbox1’e yazılsın

ListBoxSoru11:Aşağıdaki formu oluşturunuz. Kullanıcı Listbox1’den bir şehir seçtiğinde


Sağa aktar düğmesi aktif hale gelsin ve seçtiği şehir Listbox2’ye aktarılsın. Listbox2’den bir
şehir seçildiğinde ise Sola Aktar düğmesi aktif olsun ve seçilen şehir Listbox1’e aktarılsın.

Sayfa 8 / 9
KONTROLLER - II

ListBoxSoru12: Aşağıdaki formu oluşturunuz. Kullanıcı Listbox1’den bir şehir seçtiğinde


seçtiği şehirin üç ilçesinin adı listbox2’de görünsün.

Sayfa 9 / 9
DİZİLER

DİZİLERDE KULLANILAN METOTLAR

Diziler üzerinde kullanılan pek çok metod vardır. Bu metotlar genelde [Link] sınıfına
aittir.

Length Metodu

Dizi degiskenin eleman sayisini Lenght fonksiyonu ile ögrenebiliriz.

Yazım Şekli:
diziAdı.length

Public Class Form1


Dim dizi1() = {"HAKAN", "MAHMUT", "HATİCE", "HALİME", "CÜNEYT", "AYŞE", "HATİCE",
"HİLAL", "ÇAĞRI"}

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = [Link]
End Sub

End Class

CreateInstance Metodu
Yeni bir diziyi, değişken tipini ve eleman sayısını ve boyutunu parametre alarak tanımlar

Yazılımı:
[Link](Değişken Tipi, Eleman Sayısı, Boyut)

Aşağıdaki örnekte gettype metodu kullanılmıştır. Bu metod değişkenin Type değerini almak
için kullanılır.

MsgBox(GetType(String).ToString)
MsgBox(GetType(Integer).ToString)

Örnek

Public Class Form1


Dim bolum As Array = [Link](GetType(String), 3)
Dim i As Byte

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
bolum(0) = "BİLGİSAYAR TEKNOLOJİLERİ"
bolum(1) = "MUHASEBE VE VERGİ"
bolum(2) = "TASARIM"
End Sub

Sayfa 1 / 10
DİZİLER
Private Sub Button2_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
For i = 0 To 2
[Link](bolum(i))
Next
End Sub
End Class

Örnek

Public Class Form1


Dim dil As Array = [Link](GetType(String), 3, 2)
Dim i, j As Byte

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
dil = {{"[Link]", "C# ", "C++", "x", "a"}, {"PYTHON", "PHP", "ASP", "y", "b"},
{"JAVASCRİPT", "JAVA", "DELPHİ", "z", "c"}}
End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
For i = 0 To 2
For j = 0 To 4
[Link](dil(i, j))
Next
Next

End Sub

End Class

IsArray metodu

Bir değişkenin dizi değişkeni olup olmadığını belirleyen metottur. [Link]


sınıfına ait metottur. Geriye boolean türü değer döndürür.

Public Class Form1


Dim bolum As Array = [Link](GetType(String), 3)
Dim i As Byte

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
bolum(0) = "BİLGİSAYAR TEKNOLOJİLERİ"
bolum(1) = "MUHASEBE VE VERGİ"
bolum(2) = "TASARIM"
End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
For i = 0 To 2
[Link](bolum(i))
Next
End Sub

Sayfa 2 / 10
DİZİLER
Private Sub Button4_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = IsArray(bolum)
End Sub

Private Sub Button5_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = IsArray(i)
End Sub
End Class

SetValue

Dizi elemanlarına değer atamak için kullanılan metottur.


Yazım şekli:

SetValue(“Atanacak değer”, atanacak index numarası)

Örnek:

Public Class Form1


Dim bolum As Array = [Link](GetType(String), 3)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link]("Bilgisayar Teknolojileri", 0)
[Link]("Tasarım", 1)
[Link]("Pazarlama", 2)
End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link](bolum(0))
[Link](bolum(1))
[Link](bolum(2))

End Sub
End Class

GetValue

Dizi içerisindeki elemanlara erişmek için kullanılan metottur.

Yazım şekli:

GetValue(index değeri)

[Link]=[Link](2)

Join Metodu

Dizi içerisindeki elemanların hepsini bir string değişkene belirtilen ayırıcı karakter
kullanılarak aktaran metottur.

Sayfa 3 / 10
DİZİLER

Yazım şekli

[Link](ayırıcı karakter, dizi adı)

Örnek: Bir listbox içindeki değerleri önce bir diziye aktaralım daha sonra + karakterini ayırıcı
karakter olarak kullanalım ve bir stringe aktaralım.

Public Class Form1

Dim i As Byte
Dim s As String

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link]("Mersin")
[Link]("Adana")
[Link]("Ankara")
[Link]("İzmir")
[Link]("İstanbul")

End Sub

Private Sub Button4_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sehirler([Link] - 1) As String
For i = 0 To [Link] - 1
sehirler(i) = [Link](i)
Next
s = [Link]("+", sehirler)
End Sub

Private Sub Button5_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = s

End Sub
End Class

Copy Metodu: bir dizinin içeriğini başka bir diziye kopyalamak için kullanılır.

Yazım Şekli:
[Link](kaynak dizi adı, hedef dizi adı, eleman sayısı)

Örnek:

Public Class Form1


Dim dizi1() = {1, 2, 3}
Dim dizi2() = {4, 5, 6, 7}
Dim i As Byte
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
For i = 0 To [Link] - 1
[Link](dizi1(i))
Next

For i = 0 To [Link] - 1

Sayfa 4 / 10
DİZİLER
[Link](dizi2(i))
Next

End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link](dizi1, dizi2, 2)
End Sub

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link]()
[Link]()

End Sub

Private Sub Button4_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
For i = 0 To [Link] - 1
[Link](dizi1(i))
Next

For i = 0 To [Link] - 1
[Link](dizi2(i))
Next
End Sub
End Class

Örnekte dizi1 adlı dizinin ilk 2 elemanı dizi2 adlı dizinin ilk iki elemanı yerine
kopyalanmıştır. Eğer kopyalanacak eleman sayısı diziye sığmazsa hata mesajı alınır

Copy metodu 5 parametreli olarak ta kullanılabilir.

Copy(dizi1, index1, dizi2, index2, eleman sayısı)

İndex1dizi1’in hangi indisinden itibaren elemanların alınacağını belirtir.


İndex2 alınan elemanların dizi2’de hangi indisten itibaren yerleştirileceğini belirler.
eleman sayısı kaç eleman alınacağını belirler.

Örnek:

Public Class Form1


Dim dizi1() = {1, 2, 3}
Dim dizi2() = {4, 5, 6, 7}
Dim i As Byte
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
For i = 0 To [Link] - 1
[Link](dizi1(i))
Next

For i = 0 To [Link] - 1
[Link](dizi2(i))
Next

Sayfa 5 / 10
DİZİLER

End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link](dizi1, 1, dizi2, 1, 2)
End Sub

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link]()
[Link]()

End Sub

Private Sub Button4_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
For i = 0 To [Link] - 1
[Link](dizi1(i))
Next

For i = 0 To [Link] - 1
[Link](dizi2(i))
Next
End Sub
End Class

Dizilerde Arama İşlemleri

Contains Metodu

Bir dizi içerisinde bir elemanın var olup olmadığını tespit eder. Geriye boolean tipinde değer
döndürür.

Yazım Şekli:

Diziadı.Contains(aranan değer)

Örnek:

Public Class Form1


Dim dizi1() = {"HAKAN", "MAHMUT", "HATİCE", "HALİME", "CÜNEYT", "AYŞE", "HİLAL"}

Dim aranan As String


Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
aranan = [Link]
If [Link](aranan) Then MsgBox("Dizi içerisinde " & aranan & " var")
Else MsgBox("Dizi içerisinde " & aranan & " Yok")

End Sub

End Class

Sayfa 6 / 10
DİZİLER

IndexOf Metodu

dizi içerisinde aranan değerin indeks numarasını geriye döndürür. Aranan değer bulunmazsa
geriye -1 değerini döndürür.

Yazım Şekli:
[Link](dizi adı, aranacak değer, aramanın başlayacağı indis değeri)

Örnek:

Public Class Form1


Dim dizi1() = {"HAKAN", "MAHMUT", "HATİCE", "HALİME", "CÜNEYT", "AYŞE", "HATİCE",
"HİLAL"}
Dim i, indis As Integer

Dim aranan As String


Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
aranan = [Link]
indis = [Link]
i = [Link](dizi1, aranan, indis)
MsgBox(i)

End Sub

End Class

Soru: dizide aranan elemandan kaç tane olduğunu buldurun ve sonucu Textbox3 adlı metin
kutusunda görüntüleyin.

LastIndexOf Metodu

IndexOf metodu gibi arama yapar ancak aranan elemanlar birden fazla ise sonuncu elemanın
indeks değerini verir. Burada dikkat edilmesi gereken nokta aramaya sondan başlanır. Yani
aşağıdaki örnekte aramaya başlanacak indeks değeri 7 verilebilir.

Public Class Form1


Dim dizi1() = {"HAKAN", "MAHMUT", "HATİCE", "HALİME", "CÜNEYT", "AYŞE", "HATİCE",
"HİLAL"}
Dim i, indis As Integer

Dim aranan As String


Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
aranan = [Link]
indis = [Link]
i = [Link](dizi1, aranan, indis)
MsgBox(i)

Sayfa 7 / 10
DİZİLER

End Sub

End Class

Sort Metodu

Dizi elemanlarını sıralamak için kullanılır

Yazım Şekli:
[Link](diziadı)

Örnek:

Public Class Form1


Dim dizi1() = {"HAKAN", "MAHMUT", "HATİCE", "HALİME", "CÜNEYT", "AYŞE", "HATİCE",
"HİLAL", "ÇAĞRI"}
Dim i, indis As Integer

Dim aranan As String

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
For i = 0 To [Link] - 1
[Link](dizi1(i))

Next
End Sub

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link](dizi1)
End Sub

Private Sub Button4_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
For i = 0 To [Link] - 1
[Link](dizi1(i))

Next
End Sub
End Class

[Link] Metodu

Dizi elemanlarını ters sırada diziye yerleştirir.

Örnek:
Public Class Form1

Sayfa 8 / 10
DİZİLER
Dim dizi1() = {"HAKAN", "MAHMUT", "HATİCE", "HALİME", "CÜNEYT", "AYŞE", "HATİCE",
"HİLAL", "ÇAĞRI"}
Dim i, indis As Integer

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link](dizi1)

End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
For i = 0 To [Link] - 1
[Link](dizi1(i))

Next
End Sub

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
For i = 0 To [Link] - 1
[Link](dizi1(i))

Next
End Sub
End Class

Binary Search Metodu

Bu metot ile arama yapmak için dizinin sıralı olması gerekir.

Binarysearch algoritmasını öğrenmek için tıklayınız.

[Link]

Yazım Şekli

BinarySearch(Dizi adı, aranacak değer)

Public Class Form1


Dim dizi1() = {"HAKAN", "MAHMUT", "HATİCE", "HALİME", "CÜNEYT", "AYŞE", "HATİCE",
"HİLAL"}
Dim i, indis As Integer

Dim aranan As String


Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
aranan = [Link]
indis = [Link]

Sayfa 9 / 10
DİZİLER
i = [Link](dizi1, aranan)
MsgBox(i)

End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link](dizi1)
End Sub

Private Sub Button3_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
For i = 0 To [Link] - 1
[Link](dizi1(i))
Next
End Sub
End Class

Sayfa 10 / 10
DİZİLER

DİZİLER (ARRAYS)

Bundan önce tanımladığımız değişkenler veri tipine uygun yalnızca bir değer almakta idi.
Aynı tipte birden fazla değeri bir değişkende saklamak için diziler kullanılır. Örneğin bir
futbol takımının oyuncularının veya bir dersi alan öğrencilerin adlarını bir dizide tutabiliriz.
Dizinin elemanlarına birinci eleman, beşinci eleman gibi dizin (indeks) numarasıyla ulaşırız.

Aşağıda içinde 5 sayıyı barındıran bir dizi görülmektedir.

Dizi( ) 22 13 7 1 12

İndis 0 1 2 3 4

VB’de dizi tanımlaması aşağıdaki biçimde yapılır:

Dim dizi_adi ([dizinin büyüklüğü]) as veri_tipi

Dizinin büyüklüğünü belirtmek zorunlu değildir. Eğer dizinin kaç elemanlı olduğu
bilinmiyorsa parantez içerisi boş bırakılır. Bu durumda dinamik dizi tanımlanmış olur.

Örnek görsel programlama dersini 10 kişinin aldığını düşünelim. Ve dersi alan öğrencilerin
isimlerini saklayacak dizi oluşturalım.

Dim isim(9) as string

İndex numaraları sıfırdan başlar. Bu şekilde 10 elemanlı bir dizi oluşturulur.

Tanımlanan diziye değer ataması aşağıdaki şekilde olur.

isim(0) = "ali"

isim(1) = "ayşe"

isim(2) = "fatma"

isim(3) = "orhan"

isim(4) = "musa"

Sayfa 1 / 15
DİZİLER

ör:

Public Class Form1

Dim isim(4) As String

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

isim(0) = "ali"

isim(1) = "ayşe"

isim(2) = "fatma"

isim(3) = "orhan"

isim(4) = "musa"

End Sub

Private Sub Button2_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

[Link] = isim(3)

End Sub

Sayfa 2 / 15
DİZİLER

Private Sub Button3_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

[Link] = isim(CInt([Link]))

End Sub

End Class

Dizinin elemanlarına değer atanması tanımlama sırasında da aşağıdaki şekilde yapılabilir. Bu


durumda dizinin eleman sayısı (büyüklüğü) belirtilmez. Atama listesinde belirtilen eleman
sayısı kadar büyüklükte bir dizi oluşturulur.

Dim yenidizi1() As String = {"ahmet", "mehmet", "selami",


"sultan", "hatice", "faruk"}

Ör:

Public Class Form1

Dim isim(4) As String

Dim yenidizi1() As String = {"ahmet", "mehmet", "selami",


"sultan", "hatice", "faruk"}

Sayfa 3 / 15
DİZİLER

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

isim(0) = "ali"

isim(1) = "ayşe"

isim(2) = "fatma"

isim(3) = "orhan"

isim(4) = "musa"

End Sub

Private Sub Button2_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

[Link] = yenidizi1(3)

End Sub

Private Sub Button3_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

[Link] = yenidizi1(CInt([Link]))

End Sub

Private Sub Button4_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

End Sub

Private Sub Button5_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

End Sub
Sayfa 4 / 15
DİZİLER

End Class

Daha önce tanımlanmış bir diziyi yeniden boyutlandırmak için redim ifadesi kullanılır.

Redim dizi_adi (dizibüyüklüğü)

Yukarıda oluşturulan yenidizi1 adlı diziye yeni elemanlar ekleyelim. Yeni elemanlar
eklenmek istendiğinde dizi yeniden boyutlandırılmalıdır. Dizi yeniden boyutlandırıldığında
dizi elemanları silinir. Yeniden boyutlandırma sırasında dizi elemanlarının silinmesini
istemiyorsak preserve anahtar kelimesini kullanırız.

Redim preserve yenidizi1(12)

Ör:

Public Class Form1

Dim isim(4) As String

Dim yenidizi1() As String = {"ahmet", "mehmet", "selami",


_

"sultan", "hatice", "faruk"}

Sayfa 5 / 15
DİZİLER

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

isim(0) = "ali"

isim(1) = "ayşe"

isim(2) = "fatma"

isim(3) = "orhan"

isim(4) = "musa"

End Sub

Private Sub Button2_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

[Link] = yenidizi1(3)

End Sub

Private Sub Button3_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

[Link] = yenidizi1(CInt([Link]))

End Sub

Private Sub Button4_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

End Sub

Private Sub Button5_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

ReDim Preserve yenidizi1(8)

yenidizi1(6) = "cengiz"
Sayfa 6 / 15
DİZİLER

yenidizi1(7) = "mustafa"

End Sub

Private Sub Button6_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

End Sub

End Class

Soru:

Button1 adlı butona tıklanınca “8, 9, 12, 4, 5, 7, 1, 0, 6, 11” sayılarını A dizisine aktarıp
listbox1’de gösteren programı yazınız

Not: UBound(A) veya [Link] ile bir dizinin eleman sayısı öğrenilebilir

Çok Boyutlu Diziler

Yukarıda örnek olarak tanımladığımız diziler tek boyutlu idi. Dizileri çok boyutlu
tanımlayabiliriz. Çok boyutlu dizi tanımlanırken boyutlar arasına “,” konulur.

Satır ve sütun şeklinde ifade edilen bilgilerin tablo olarak temsil edilmesi için çok boyutlu
diziler ( indisler ) kullanılır. Tablonun bir elemanını belirlemek için iki indis belirlenmelidir.
Buradaki elemanlardan birincisi dizi elemanının satırını ve ikincisi ise sütununu belirler.

Bir elemanını belirlemek için iki indis kullanan dizilere iki boyutlu diziler ( 2B diziler, 2D
diziler, 2Dimension arrays ) denir. Benzer şekilde bir elemanını belirlemek için üç indis
kullanan dizilere üç boyutlu ( 3B, 3D ) diziler denir.

İki veya daha fazla boyutlu diziler çok boyutlu diziler olarak bilinir.

Yukarıda örnek olarak tanımladığımız diziler tek boyutlu idi. Dizileri çok boyutlu
tanımlayabiliriz. Çok boyutlu dizi tanımlanırken boyutlar arasına “,” konulur.

Aşağıdaki örnek kod ile ilk boyutunda 4, ikinci boyutunda 5 eleman olan 2 boyutlu bir dizi
tanımlanmıştır. Dizi 4 satır, 5 sütun (kolon) içerir. Yani 4 X 5 elemanlı dizidir. Genel olarak
bir dizi m satır ve n sütundan oluşuyorsa m x n boyutlu dizi olarak adlandırılır.

Sayfa 7 / 15
DİZİLER

Dim cdizi (3,4) as integer

Sütun 0 Sütun 1 Sütun 2 Sütun 3 Sütun 4

Satır 0 C(0,0) C(0,1) C(0,2) C(0,3) C(0,4)

Satır 1 C(1,0) C(1,1) C(1,2) C(1,3) C(1,4)

Satır 2 C(2,0) C(2,1) C(2,2) C(2,3) C(2,4)

Satır 3 C(3,0) C(3,1) C(3,2) C(3,3) C(3,4)

Ör

Public Class Form1

Dim cdizi(3, 4) As Integer

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

cdizi(0, 0) = 1

cdizi(0, 1) = 2

cdizi(0, 2) = 3

Sayfa 8 / 15
DİZİLER

cdizi(0, 3) = 4

cdizi(1, 0) = 5

cdizi(1, 1) = 6

cdizi(1, 2) = 7

cdizi(1, 3) = 8

cdizi(2, 0) = 9

cdizi(2, 1) = 10

cdizi(2, 2) = 11

cdizi(2, 3) = 12

End Sub

Private Sub Button2_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

[Link] = cdizi(CInt([Link]),
CInt([Link]))

End Sub

End Class

Çok boyutlu diziler, tek boyutlu dizilerde olduğu gibi başlangıç değeri atanarak ta
tanımlanabilir. Aşağıdaki örnek kod yukarıda örnekte verilen dizi atamasını yapar.

Dim ycdizi(,) As Integer = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9,


10, 11, 12}}

Ör:

Sayfa 9 / 15
DİZİLER

Private Sub Button3_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]

Dim ycdizi(,) As Integer = {{1, 2, 3, 4}, {5, 6, 7,


8}, {9, 10, 11, 12}}

[Link] = ycdizi(CInt([Link]),
CInt([Link]))

End Sub

FOR EACH DÖNGÜSÜ

Listeler ya da diziler üzerinde işlem yapmak için kullanılan döngü yapısıdır. Özellikle eleman
sayısının bilinmediği durumlarda kullanılabilmesi özelliği ile çok kullanışlıdır.

Kullanım şu şekildedir:

For each değişken_adi as değişken_tipi in liste ya da dizi

Komutlar

Next

Örnek olarak bir dizinin elemanlarını listeleyen bir uygulama yapalım.

Sayfa 10 / 15
DİZİLER

Public Class Form1

Dim ad = {"ahmet", "mehmet", "süreyya", "faik", "sait",


"mustafa", "fahriye"}

Dim eleman As String

Private Sub Button1_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]

For Each eleman In ad

MsgBox(eleman)

Next

End Sub

End Class

Örneğimizde for each döngüsü ile ad dizisinin elemanlarını alarak eleman adlı değişkene
atayıp, döngü içerisinde eleman değişkeninin içeriği yazdırılmaktadır.

Aynı örneği for next döngü yapısı ile yapalım

Sayfa 11 / 15
DİZİLER

Public Class Form1

Dim ad = {"ahmet", "mehmet", "süreyya", "faik", "sait",


"mustafa", "fahriye"}

Dim i As Integer

Private Sub Button1_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]

For i = 0 To 6

MsgBox(ad(i))

Next i

End Sub

End Class

For each döngüsü sıklıkla bir form üzerindeki kontrollere erişmek amacı ile de
kullanılmaktadır. Örneğin bir form üzerinde bulunan textbox nesnelerine erişerek onların
içeriğini temizleyen, zemin ve yazı renklerini değiştiren bir uygulama yapalım.

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]

For Each nesne As Control In [Link]

Sayfa 12 / 15
DİZİLER

If TypeOf (nesne) Is TextBox Then

[Link] = ""

[Link] = [Link]

[Link] = [Link]

End If

Next

End Sub

Ör: İki boyutlu dizinin elemanlarını iç içe döngüyle listbox’a listeleme

Public Class Form1

Dim i, j As Integer
Dim ad = {"ahmet", "mehmet", "süreyya", "faik", "sait",
"mustafa", "fahriye", "kemal", "Musa"}
Dim ycdizi(,) As Integer = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10,
11, 12}}

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles


[Link]
For i = 0 To 2
For j = 0 To 3
[Link](ycdizi(i, j))
Next
Next
End Sub

End Class

Sorular

1. 10 elemanlı bir sayı dizisine eleman girişini yapan bir program yazın.

Sayfa 13 / 15
DİZİLER

2. 10 elemanlı bir sayı dizisinin elemanlarının toplamını bulan bir program yazın.

Burada giriş buton1’e tıklanınca yapılıyor. İnputbox fonksiyonu ile giriş yapılıyor.
Button2’ye tıklanınca sonuç metin kutusunda gösteriliyor

3. 10 elemanlı bir sayı dizisinin elemanlarının aritmetik ortalamasını bulan bir program
yazın.

4. 10 elemanlı bir sayı dizisinin başlangıç ve bitiş indeksi verildiğinde arada kalan
elemanların aritmetik ortalamasını bulan bir program yazın.

5. 10 elemanlı bir sayı dizisinin en büyük elemanını bulan bir program yazın.

6. 10 elemanlı bir sayı dizisinin en küçük elemanını bulan bir program yazın.

7. 10 elemanlı bir sayı dizisinin negatif elemanlarının toplamını bulan bir program yazın.

8. 10 elemanlı bir sayı dizisinde 150’den büyük değerdeki elemanların sayısını bulan bir
program yazın.

9. 10 elemanlı bir sayı dizisinde negatif ve pozitif elemanların ayrı ayrı ortalamasını
bulan bir program yazın.

10. 10-20 arası rasgele üretilen 5 sayıyı x dizisine aktaran ve dizinin tüm elemanlarını
listbox1’de görüntüleyen bir program yazınız.

11. Dışarıdan inputbox ile girilen N elemanlı bir dizinin tüm elemanlarını toplayan ve
sonucu mesaj kutusu ile görüntüleyen bir program yazınız.

12. N elemanlı bir A dizisini ters sırada B dizisine aktaran programı yazınız.

Sayfa 14 / 15
DİZİLER

Yol Gösterme: Dizinin ters sırada aktarılması; baştan ve sondan karşılıklı gelen
elemanlarının yer değiştirilmesi işlemidir. Yani dizinin 10. elemanı 1. Elemanı ile, 9.
elemanı 2. elemanı ile yer değiştirilecek ve oluşan yeni dizi, B dizisine aktarılacak. N
elemanlı bir dizide bu işlemi B(I) = A( N+1 –I ) şeklinde formülleştirebiliriz.

13. Bilgisayarın rasgele ürettiği 10 kişinin sınavdan aldıkları notların ortalamasını bulan
ve not ortalamasına eşit, not ortalamasından küçük ve büyük kişilerin sayısını veren
programı yazınız.

14.

BİLEŞEN OCAK ŞUBAT MART

EKRAN 235 600 650

HDD 444 900 900

1 GB RAM 234 500 350

EKRAN K. 222 450 430

YAZICI 567 500 420

Aşağıdaki soruları tabloya göre programlayarak yapınız.

a. Her bileşen için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

b. Her ay için tüm bileşenlerin satış toplamları nelerdir? (Tabloda sütun toplamlarının
hesaplanması)

c. Her bileşen için en çok satışın gerçekleştirildiği ay hangisidir? (Satırlardaki en büyük


elemanların tespiti)

d. Her ay için en çok satışın gerçekleştirildiği bileşen hangisidir? (Sütunlardaki en büyük


elemanların tespiti)

e. Tüm bileşen ve tüm aylar için otomobil satışları toplamı nedir? (Tablonun genel
toplamının bulunması)

Sayfa 15 / 15
KONTROLLER - I

PANEL VE GRUP KUTULARI (PANEL, GROUPBOX)

Projenin daha fonksiyonel olması için Windows formu çeşitli bölgelere ayrılabilir. Bölgelere
ayırma işlemi panel ve groupbox denetimleri aracılığıyla yapılır. Panel ve groupbox
denetimleri diğer denetimler için bir kapsayıcı (container) denetim olarak işlem görür.
Denetimler gruplara ayrılarak kapsayıcı denetimler üzerine yerleştirilir.

Bir panel veya grup kutusu üzerine yerleştirilen denetimler, panel veya grup kutusu
sürüklendiğinde panel veya grup kutusu ile birlikte hareket eder. Çünkü panel veya grup
kutusu, üzerindeki denetimler için bir taşıyıcı veya kapsayıcı denetimdir. Kapsayıcı denetim
hareket ettirildiğinde üzerindeki denetimler de hareket eder. Silindiğinde ise üzerindeki
denetimler de silinir. Kapsayıcı denetim üzerindeki denetimlerin yazı tipi ve renk gibi
özellikleri de tek seferde ayarlanabilir.

Panel denetiminin groupbox denetiminden farkı kaydırma çubukları ve başlığın kullanılıp


kullanılmaması durumudur. Panel üzerinde kaydırma çubuklarını kullanabiliriz, grup
kutusunda ise kaydırma çubukları yer almaz. İkinci fark ise, grup kutusu için bir başlık
belirtebiliriz fakat panel üzerinde bir başlık bulunmaz.

ONAY KUTULARI (CHECK BOX)


çeşitli veriler arasında seçim yapmak için onay kutuları kullanılır.

ÖZELLİKLER

Appearance: Onay kutularının görünümünün seçilmesini sağlar. Buton değeri seçildiğinde


onay kutusu bir buton görünümünü alır.

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
If [Link] = [Link] Then
[Link] = [Link]
Else
[Link] = [Link]
End If
End Sub

Autosize: Form üzerine bir onay kutusu yerleştirildiğinde onay kutusu üzerinde
görüntülenecek yazının büyüklüğüne göre onay kutusu boyutu Mouse ile belirlenir. Onay
kutusu üzerinde görüntülenecek yazının onay kutusu boyutundan büyük olduğu durumlarda
yazının sadece onay kutusu boyutuna sığan kısmı görüntülenir. Diğer kısımları kesilir. Bu
durumu ortadan kaldırmak için onay kutusu autosize özelliği true olarak düzenlenir.
[Link] = True

Backcolor: Backcolor ile arka plan rengi belirlenir.

Public Class Form1

Sayfa 1 / 17
KONTROLLER - I

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = [Link]
End Sub
End Class

Backgroundimage: checkbox’ın arka planına resim eklememizi sağlar. Ancak burada birkaç
durum vardır. Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza
çıkar. Bu butona tıkladığımızda aşağıdaki pencere açılır.

Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek remi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]("d:\[Link]")
End Sub

Backgroundimagelayout: Backgroundimage ile eklenilen resmin nasıl yerleştirileceğini


düzenlemek için kullanılır. 5 farklı değer alır: none, center, stretch, tile, zoom

None: resmin hangi kısmı forma geliyorsa o kısmı forma eklenir. Yani resmin boyutu kadar
eklenir.

Tile: resim yan yana ve üst üste eklenir. Formun boyutu artırıldığında bu durum görülür.

Sayfa 2 / 17
KONTROLLER - I

Center: Resmin ortalanmasını sağlar.

Stretch: Resmin boyutu ne olursa olsun resmi forma sığdırır.

Zoom: resmi yaklaştırır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]("d:\[Link]")
[Link] = [Link]

End Sub

Checkalign: onay işaretinin konulacağı kutucuğun konumunun seçilmesini sağlar.

Checked: onay kutusunun başlangıçta onaylı olup olmayacağını belirler. Ayrıca onay
kutusunun seçili olup olmadığını öğrenmek için de kullanılır.

Ör1:

Private Sub Button3_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = True

End Sub

Private Sub Button4_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = False
End Sub

Ör2:

Private Sub Button5_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
If [Link] = True Then
MsgBox("check1 işaretli")
Else
MsgBox("check1 işaretli değil")
End If
End Sub

Sayfa 3 / 17
KONTROLLER - I

Checkedstate: checked özelliği ile ilişkili olarak çalışır. Onay kutusunun onaylı veya onaylı
değil durumunu ayarlamak / öğrenmek için kullanılır. Bir onay kutusu onaylı değil
(unchecked), onaylı (checked) veya belirsiz (indeterminate) durumlarından birisine dahildir.

Private Sub Button2_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
If [Link] = [Link] Then
MsgBox("check1 işaretli")
End If
If [Link] = [Link]
Then
MsgBox("check1 indeterminate")
End If
If [Link] = [Link] Then
MsgBox("check1 işaretli değil")
End If
End Sub

Cursor: Farenin checkbox üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.

[Link] = [Link]

Private Sub Button3_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = [Link]

End Sub

Sayfa 4 / 17
KONTROLLER - I

Dock: checkbox’ın form üzerinde bulunacağı konumun seçilmesini sağlar.

checkbox’ın bulunacağı yer solda belirtilen alanların birine tıklanarak


seçilir.

Dock özelliği kod ile aşağıdaki gibi değiştirilebilir.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Enabled Özelliği: Checkbox’ın kullanılıp kullanılmayacağını belirler. Enabled özelliği


False olarak belirlenmiş checkbox kullanılmaz

Ör:
checkbox1. Enabled = True
checkbox1. Enabled = False

Flatstyle: checkbox’ın görünüm tipinin seçilmesini sağlar.

Font: Font özelliği birçok alt özellik taşır. Bunlardan bazıları


en sık kullanılan özelliklerdir

Name: Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.

Size: Karakterlerin büyüklüğünü belirler. Varsayılan büyüklük 8,5 değerindedir.

Bold (Kalın): Yazının kalın tipte olmasını belirler.

Italic (İtalik): Yazının italik tipte olmasını belirler.

UnderLine (Altı çizgili): Yazının altı çizgili olmasını belirler.

checkbox üzerindeki yazının özellikleri çalışma zamanında kodlarla düzenlenebilir. Kodlama


şekli aşağıdaki örneklere benzer.

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = New Font("arial", 26, _
[Link], [Link])
End Sub

Sayfa 5 / 17
KONTROLLER - I

Forecolor: Bu özellik checkbox üzerindeki yazı rengini belirlemek için kullanılır.

[Link] = [Link]

Location: checkbox’ın form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Locked: True olarak seçildiğinde, tasarım anında, checkbox’ın taşınması ve boyutlarının


değiştirilmesini kilitler. Bu durumu bildirmek üzere denetimin sol üst köşesinde bir anahtar
simgesi belirir.

Maximumsize: checkbox’ın maksimum ne kadar büyütülebileceğini belirtir.

Minimumsize: checkbox’ın minimum ne kadar küçültülebileceğini belirtir.

Size: checkbox’ın genişlik ve yüksekliğini değiştirmek için kullanılır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = 200
[Link] = 150
End Sub

Text: Bu özellikle checkbox üzerinde görüntülenecek metin belirlenir.

Textalign: checkbox üzerinde gösterilecek metnin konumunun seçilmesini sağlar.

Threestate: onay kutusu tıklandığında iki seçenek (checked ve unchecked) yerine üç


seçenekli (checked, unchecked ve indeterminate) durumda kullanılmasını sağlar.

Visible: checkbox kutusunun gizlenip gizlenmeyeceğini belirler.

OLAYLAR:
Appearancechanged: görünüm değiştiğinde tetiklenir.

Checkchanged: işaret değiştiğinde tetiklenir. (kod ile tetiklenebilir)

Checkstatechanged: checkstate değiştiğinde tetiklenir.

Sayfa 6 / 17
KONTROLLER - I

Click: tıklandığında tetiklenir

Visiblechanged: görünürlük durumu değiştiğinde tetiklenir.

Ör: butona tıklandığı zaman checkbox işaretli durumdaysa mesaj kutusu ile seçildi, işaretli
değilse seçilmedi yazan bir program yazın

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
If [Link] = True Then
MsgBox("seçildi")
Else
MsgBox("seçilmedi")
End If
End Sub

CheckBoxSoru1:

Kullanıcı aşağıda belirtilen dillerden istediğini checkbox ile işaretleyecek ve ileri butonuna
tıklanınca hangi diller işaretlenmişse mesaj kutusu ile o dilleri bildiğini belirten bir mesaj
versin.
Örneğin Türkçe İngilizce ve Fransızcayı işaretleyen bir kullanıcı için “siz TÜRKÇE
İNGİLİZCE FRANSIZCA biliyorsunuz” şeklinde bir mesaj verilsin.

Proje için form tasarımı aşağıdadır.

Sayfa 7 / 17
KONTROLLER - I

CheckBoxSoru2:
checkbox’a tıklandığında tıklandı şeklinde mesaj veren bir program hazırlayın

Proje için form tasarımı aşağıdadır.

CheckBoxSoru3:
Checkbox işaretlendiğinde “işaretlendi”, işaret kaldırıldığında “işaret kaldırıldı” şeklinde
mesajı mesaj kutusuyla veren bir program yazın.

Proje için form tasarımı aşağıdadır.

Sayfa 8 / 17
KONTROLLER - I

CheckBoxSoru4:

Checkbox işaretli ise [Link] true işaretsiz ise [Link] false olacak şekilde bir
program yazın

Proje için form tasarımı aşağıdadır.

CheckBoxSoru5:

Yukarıdaki formu oluşturun. Formdaki her bir onay kutusu gruplardan birinin rengini
değiştirmek üzere kullanılmıştır. Checkbox1 işaretli ise groupbox1’in arkaplan rengi mavi,
checkbox1 işaretli değilse groupbox1’in arkaplan rengi turuncu olsun.
Checkbox2 işaretli ise groupbox3’ün arkaplan rengi kırmızı, checkbox2 işaretli değilse
groupbox3’ün arkaplan rengi kahverengi olsun.
Checkbox3 işaretli ise groupbox4’ün arkaplan rengi siyah, checkbox3 işaretli değilse
groupbox4’ün arkaplan rengi beyaz olsun.

Sayfa 9 / 17
KONTROLLER - I

Checkbox4 işaretli ise groupbox2’nin arkaplan rengi sarı, checkbox4 işaretli değilse
groupbox2’nin arkaplan rengi yeşil olsun.

RADYO BUTONLARI (RADİO BUTTON, OPTİON


BUTTON)

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
işaretlenebildiği için, kontrollerin yapılması CheckBox kontrolüne göre daha kolaydır.

ÖZELLİKLER

Appearance: radio düğmelerinin görünümünün seçilmesini sağlar. Buton değeri seçildiğinde


radio düğmesi bir buton görünümünü alır.

Autosize: Form üzerine bir radyo düğmesi yerleştirildiğinde radyo düğmesi üzerinde
görüntülenecek yazının büyüklüğüne göre radyo düğmesi boyutu Mouse ile belirlenir. radyo
düğmesi üzerinde görüntülenecek yazının radyo düğmesi boyutundan büyük olduğu
durumlarda yazının sadece radyo düğmesi boyutuna sığan kısmı görüntülenir. Diğer kısımları
kesilir. Bu durumu ortadan kaldırmak için radyo düğmesi autosize özelliği true olarak
düzenlenir.

[Link] = True

Backcolor: Backcolor ile arka plan rengi belirlenir.

Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = [Link]
End Sub
End Class

Backgroundimage: radio button’un arka planına resim eklememizi sağlar. Ancak burada
birkaç durum vardır. Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton
karşımıza çıkar. Bu butona tıkladığımızda aşağıdaki pencere açılır.

Sayfa 10 / 17
KONTROLLER - I

Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek remi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] =
[Link]("d:\[Link]")
End Sub

Backgroundimagelayout: Backgroundimage ile eklenilen resmin nasıl yerleştirileceğini


düzenlemek için kullanılır. 5 farklı değer alır: none, center, stretch, tile, zoom

None: resmin hangi kısmı forma geliyorsa o kısmı forma eklenir. Yani resmin boyutu kadar
eklenir.

Tile: resim yan yana ve üst üste eklenir. Formun boyutu artırıldığında bu durum görülür.

Center: Resmin ortalanmasını sağlar.

Stretch: Resmin boyutu ne olursa olsun resmi forma sığdırır.

Zoom: resmi yaklaştırır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]

Sayfa 11 / 17
KONTROLLER - I

[Link] =
[Link]("d:\[Link]")
[Link] =
[Link]

End Sub

Checkalign: onay işaretinin konulacağı kutucuğun konumunun seçilmesini sağlar.

Checked: radio düğmesinin başlangıçta onaylı olup olmayacağını belirler. Ayrıca radio
düğmesinin seçili olup olmadığını öğrenmek için de kullanılır.

Ör1:

Private Sub Button3_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = True

End Sub

Private Sub Button4_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = False
End Sub

Ör2:

Private Sub Button5_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
If [Link] = True Then
MsgBox("radio1 işaretli")
Else
MsgBox("radio1 işaretli değil")
End If
End Sub

Cursor: Farenin radio button üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda
fare işaretçisinin bazı şekilleri görünmektedir.

Sayfa 12 / 17
KONTROLLER - I

[Link] = [Link]

Private Sub Button3_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = [Link]

End Sub

Dock: radiobutton’un form üzerinde bulunacağı konumun seçilmesini sağlar.


radiobutton’un bulunacağı yer solda belirtilen alanların birine tıklanarak
seçilir.

Dock özelliği kod ile aşağıdaki gibi değiştirilebilir.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Enable: radiobutton’un kullanılıp kullanılmayacağını belirler. Enabled özelliği False olarak


belirlenmiş radiobutton kullanılmaz
Ör:
Radiobutton1. Enabled = True

Sayfa 13 / 17
KONTROLLER - I

Radiobutton1. Enabled = False

Enabled özelliği False olarak belirlenen bir Radiobutton; gri, silik bir görünüm alır.

Font: Font özelliği birçok alt özellik taşır. Bunlardan bazıları


en sık kullanılan özelliklerdir

Name. Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.
Size: Karakterlerin büyüklüğünü belirler. Varsayılan büyüklük 8,5 değerindedir.
Bold (Kalın): Yazının kalın tipte olmasını belirler.
Italic (İtalik): Yazının italik tipte olmasını belirler.
UnderLine (Altı çizgili): Yazının altı çizgili olmasını belirler.

Radiobutton üzerindeki yazının özellikleri çalışma zamanında kodlarla düzenlenebilir.


Kodlama şekli aşağıdaki örneklere benzer.

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = New Font("arial", 26, _
[Link], [Link])
End Sub

Forecolor: Bu özellik Radiobutton üzerindeki yazı rengini belirlemek için kullanılır.

[Link] = [Link]

Location: Radiobutton’ın form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Maximumsize: Radiobutton’un maksimum ne kadar büyütülebileceğini belirtir.

Minimumsize: Radiobutton’un minimum ne kadar küçültülebileceğini belirtir.

Size: Radiobutton’un genişlik ve yüksekliğini değiştirmek için kullanılır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = 200
[Link] = 150
End Sub

Sayfa 14 / 17
KONTROLLER - I

Text: Bu özellikle radiobutton yanında görüntülenecek metin belirlenir.

Textalign: radiobutton yanında gösterilecek metnin konumunun seçilmesini sağlar. Bu


özelliği kullanmak için önce autosize özelliği false yapılırsa daha net görülür.

Visible: radiobutton düğmesinin gizlenip gizlenmeyeceğini belirler.

OLAYLAR

Appearancechanged:görünüm değiştiğinde tetiklenir.

Backcolorchanged: arkaplan rengi değitiğinde tetiklenir.

Checkchanged: işaret değiştiğinde tetiklenir. (kod ile tetiklenebilir)

Click: tıklandığında tetiklenir

Visiblechanged: görünürlük durumu değiştiğinde tetiklenir.

RadioButtonSoru1:

Button1 adlı butona tıklandığında, yukarıdaki formda RadioButton1 işaretliyse çıktı kutusu ile
“Seçildi”, Seçili değilse Çıktı kutusuyla “Seçilmedi” şeklinde mesaj veren bir program
yazınız.

Sayfa 15 / 17
KONTROLLER - I

RadioButtonSoru2:

Yukarıdaki formda 3 label ve 3 radiobutton vardır. Label1’e “Siz”, Label3’e “T-Shirt


Seçtiniz” yazılarını yazdırın. Label2’ye ise radiobuttonlardan hangisi seçiliyse onun yanında
yazan renk yazsın

RadioButtonSoru3:

Yukarıdaki formda 6 label ve 6 radiobutton vardır. Label1’e “Siz”, Label3’e “T-Shirt


Label4’e “ve”, Label6’ya “bedeni seçtiniz” yazılarını yazdırın. Label2’ye T-Shirt renginin
içeren radiobuttonlardan hangisi seçiliyse onun yanında yazan renk yazsın. Label5’e . T-Shirt

Sayfa 16 / 17
KONTROLLER - I

bedenini içeren radiobuttonlardan hangisi seçiliyse onun yanında yazan beden büyüklüğü
yazsın.

Sayfa 17 / 17
KONTROLLER - I

WİNDOWS FORM KONTROLLERİ


Nesneye dayalı programlamanın temelinde nesneler (object) vardır. VB, nesneleri
tanımlamak üzere sınıfları kullanmaktadır. Her sınıfın kendine has alanları (fields),
yordamları (procedures), özellikleri (properties), metotları (methods) vardır. Bunlar sınıf
içerisinde tanımlanmıştır ve o sınıfın üyeleri olarak adlandırılır.

Kontroller (Denetimler) Toolbox üzerinde bulunan ve arabirim oluşturmak için


kullanılan nesnelerdir.

Arabirim programın kullanıcıya görünen yüzüdür. Diğer bir deyişle arabirim program
kodları ile kullanıcı arasındaki iletişimi sağlar. Bu nedenle arabirim oluşturmak kod yazmak
kadar önemlidir. Ne kadar çok ne kadar güzel kod yazarsanız yazın kullanıcı bu kodlardan
arabirim sayesinde yararlanabilir. Buda demek oluyor ki kötü bir arabirim kodların yeterince
kullanılamaması anlamına gelir.

Teknik özelliklerinin yanında arabirimin görünümü de çok önemlidir. Form üzerine


düzensizce yerleştirilmiş kontroller programın görsel bütünlüğünü bozacağı gibi, programın
kullanımını da zorlaştıracaktır. Bugün birçok şirket web sayfalarının yalnızca görünümü için
binlerce dolar harcar.

Kodlama işlemi programcılığın temelidir ve kodlama işlemi kontrollere bağlıdır. İyi


bir kodlama dolayısıyla iyi bir program için kontrollerin iyi tanınması gerekir. Bir kontrolün
işlevini tam olarak öğrenmeden o kontrolün olaylarını, metotlarını ve özelliklerini bilmeden o
kontrole ait kod yazılamaz.
Metotlar nesnelere doğrudan yaptırmak istediğimiz işleri belirtmek için kullanılır.

Metotlar Kontrol Olaylar


(methods) (events)

Özellikler
(properties)

Formlar kontrollere zemin görevi görür. Bu yüzden kontrollere başlamadan önce


formlar konusu çok iyi öğrenilmelidir.

GENEL BİLGİLER

Kontroller araç kutusu (Tool box) üzerinde bulunur.


Kontrolleri tek tek incelemeye başlamadan önce kontrol özelliklerinden biraz
bahsedelim. Her kontrolün bir çok özelliği vardır. Bu özelliklerin bir kısmı kontrolün
kendisine özeldir. Bir kısmı ise diğer kontrollerde de bulunan ortak özelliklerdir. Örneğin
name özelliği bir kontrolün ismini belirtir ve tüm kontrollerde ortaktır. Bunun yanında
interval özelliği yalnızca timer kontrolüne özgü bir özelliktir.

Kontrollerin tasarım anında büyüklük ve yerleri size ve location özellikleri ile


belirlenebileceği gibi, fare ile de ayarlanabilir. Tasarım sayfası, formun ve üzerindeki
kontrollerin görünümlerini kolay bir şekilde değiştirmeyi sağlar. Kod sayfasında ise kodlar
yazılır.

Sayfa 1 / 30
KONTROLLER - I

BUTONLAR (BUTTONS)
En çok kullanılan denetimlerdendir. Dolayısıyla hemen her Windows uygulamasında
kullanılmaktadır. Butonlar, düğme şeklinde genellikle tıklanarak kullanılan denetimlerdir.
Kullanıcı programa bir işlem yaptırmak istediğinde ilgili butonu tıklatır. Geri planda yer alan
VB kodu devreye girerek çalışır. Butonlar sayesinde programla etkileşim kolay bir şekilde
sağlanmış olur.

BUTON ÖZELLİKLERİ

Anchor: butonun form üzerindeki yerinin yukarı (top), aşağı (bottom), sol (left) ve sağ (right)
kenarlarından birine sabitlenmesini sağlar. Örneğin butonun anchor özelliği bottom olarak
seçilmişse, buton alt kenarından sabitlenir. Formun alt kenarı ile buton arasındaki mesafe hep
sabit kalır. Buton aşağı yukarı doğru büyütülüp küçültülse bile bu mesafe değişmez.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Name Özelliği: Form üzerine bir buton yerleştirdiğinizde Visual Basic butonun ismini
otomatik olarak button1 olarak belirler. Siz name özelliğinden butonun ismini
değiştirebilirsiniz. Butonları isimlendirirken ismin başına o kontrolün bir buton olduğunu
belirten btn harfleri eklenir. btnbasla veya btnbitir gibi.

Text Özelliği: Buton üzerinde görüntülenecek yazının (başlık) belirlenmesinde


kullanılır. Butonun başlığı doğal olarak butonun yapacağı işi belirtir nitelikte olmalıdır. Başlık
belirlerken & karakterinin kullanımı butona Alt tuşu ile ulaşılmasını sağlar. Örneğin Text
özelliği &Kaydet olarak belirlenmiş bir butona Alt+K tuşları ile ulaşılır. Yani butona
tıklanmış gibi olur. & karakteri kendisinden sonra gelen harf ile Alt tuşunun birlikte
kullanılabilmesini sağlar. Buton üzerinde Alt tuşu ile birlikte kullanılacak harfin altı çizilir.
Harfin altı çizili görünmesi için butonun usemnemonic özelliğinin True olması gerekir.

[Link] = "abc"

AutoEllipsis: Butonun text özelliğine yazılan metin butonun boyutlarından fazla olunca
görünmeyen kısmı belli etmek üzere elips (…) işaretinin çıkıp çıkmayacağını belirtir. True
veya false değerini alır. True değeri elips (…) işaretinin çıkacağını belirtir.

Autosize: kontrolün text özelliğine uzunca bir şey yazdığımızı farz edelim ve bu
yazdıklarımız butonun boyutundan büyük olsun. Eğer autosize özelliği true ise buton o
yazının uzunluğu kadar otomatik olarak genişler.

Sayfa 2 / 30
KONTROLLER - I

Autosizemode: Autosize özelliğinin ne şekilde çalışacağının seçilmesini sağlar. Growonly


seçeneği butonun yalnızca büyütüleceğini belirtir. Growandshrink seçeneği ise butonun hem
büyütülebileceğini hem de küçültülebileceğini belirtir

Backcolor
Butonun arkaplan renginin belirlenmesinde kullanılır.
[Link] = [Link]

Backgroundimage: butonun arka planına resim eklememizi sağlar. Ancak burada birkaç
durum vardır. Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza
çıkar. Bu butona tıkladığımızda aşağıdaki pencere açılır.

Sayfa 3 / 30
KONTROLLER - I

Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]("d:\[Link]")
End Sub

Backgroundimagelayout: Backgroundimage ile eklenilen resmin nasıl yerleştirileceğini


düzenlemek için kullanılır. 5 farklı değer alır: none, center, stretch, tile, zoom

None: resmin hangi kısmı butona geliyorsa o kısmı butona eklenir. Yani resmin boyutu kadar
eklenir.

Tile: resim yan yana ve üst üste eklenir. butonun boyutu artırıldığında bu durum görülür.

Center: Resmin ortalanmasını sağlar.

Stretch: Resmin boyutu ne olursa olsun resmi butona sığdırır.

Zoom: resmi yaklaştırır.

[Link] = [Link]

Sayfa 4 / 30
KONTROLLER - I

Cursor: Farenin buton üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.

[Link] = [Link]

Private Sub Button3_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Dialogresult: modal veya dialog şeklinde gösterilen formlarda, butona tıklandığı anda ana
forma gönderilecek değerin seçilmesini sağlar. Aşağıdaki değerleri alabilir.

Geriye gönderilen (ana forma gönderilen) değer aşağıdaki örnekte


gösterildiği gibi işlenebilir.

Sayfa 5 / 30
KONTROLLER - I

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link]()
If [Link] = [Link] Then
MsgBox("ok")
Else
MsgBox("no")
End If

End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link]()
If [Link] = [Link] Then MsgBox("ok")

If [Link] = [Link] Then


MsgBox("cancel")
If [Link] = [Link] Then
MsgBox("abort")
If [Link] = [Link] Then
MsgBox("ignore")
If [Link] = [Link] Then MsgBox("no")
If [Link] = [Link] Then MsgBox("yes")
If [Link] = [Link] Then
MsgBox("retry")

Sayfa 6 / 30
KONTROLLER - I

End Sub

Dock: butonun form üzerinde bulunacağı konumun seçilmesini sağlar.


Butonun bulunacağı yer solda belirtilen alanların birine tıklanarak seçilir.

Yandaki buton1 düğmesi için dock özelliği


bottom olarak ayarlanmıştır.

Dock özelliği kod ile aşağıdaki gibi değiştirilebilir.


Private Sub Button2_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Enabled Özelliği: Butonun kullanılıp kullanılmayacağını belirler. Enabled özelliği False


olarak belirlenmiş buton kullanılmaz
Ör:
Button1. Enabled = True
Button1. Enabled = False

Ör:
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = False
End Sub

Private Sub Button2_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = True
End Sub

Sayfa 7 / 30
KONTROLLER - I

Private Sub Button3_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
MsgBox("merhaba")
End Sub

Enabled özelliği False olarak belirlenen bir buton; gri, silik bir görünüm alır.

Flatstyle: Butonun görünüm tipinin seçilmesini sağlar.

Flatappearance: Flatstyle özelliği Flat olarak seçildiğinde aktif olur. Butonun kenar
çizgilerinin rengi ve kalınlığı ile imleç buton üzerine getirildiğinde ve tıklandığı anda butonun
renginin seçilmesini sağlar.

Font: Butonun üzerine yazılacak yazının tipi ve boyutu Font penceresinden düzenlenir.

Font penceresi tüm kontroller için ortaktır.

Font özelliği birçok alt özellik taşır. Bunlardan bazıları en sık kullanılan özelliklerdir

Name: Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.

Size: Karakterlerin büyüklüğünü belirler. Varsayılan büyüklük 8,5 değerindedir.

Bold (Kalın): Yazının kalın tipte olmasını belirler.

Italic (İtalik): Yazının italik tipte olmasını belirler.

UnderLine (Altı çizgili): Yazının altı çizgili olmasını belirler.

Ör:
Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
Dim f As String
f = "arial"
[Link] = New Font("times new roman", 16, _
[Link], [Link])
Sayfa 8 / 30
KONTROLLER - I

End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link] = New Font("arial", 26, _
[Link], [Link])
End Sub
End Class

Forecolor: Bu özellik buton üzerindeki yazı rengini belirlemek için kullanılır.

[Link] = [Link]

İmage: Butonun arka planına resim eklememizi sağlar. Ancak burada birkaç durum vardır.
Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona
tıkladığımızda aşağıdaki pencere açılır.

Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = [Link]("d:\[Link]")
End Sub

Sayfa 9 / 30
KONTROLLER - I

Not: BackgroundImage duvar kağıdı gibidir, tüm arka planı kaplar. Arka plan için desenler
veya tam resimler kullanmalısınız. Sadece bir simge göstermeye çalışıyorsanız [Link]
kullanın [Link] özelliği düğme denetiminde görüntülenen görüntüdür.
BackgroundImage denetimin arka planında görüntülenecek görüntüyü temsil eden bir
görüntüdür. Bu sayede bir BackgoundImage ve bir [Link] ayarlayabilirsiniz.
[Link], BackgroundImage'ın üstüne yerleştirilecektir

İmagealign: Resmin buton üzerindeki yerini belirlemek için kullanılır.

Location: Butonun form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Locked: True olarak seçildiğinde, tasarım anında, butonun taşınması ve boyutlarının


değiştirilmesini kilitler. Bu durumu bildirmek üzere denetimin sol üst köşesinde bir anahtar
simgesi belirir.

Padding: Butonun sol, sağ, üst ve alt kenarlardan ne kadar boşluk bırakılacağını belirler.

Size: butonun genişlik ve yüksekliğini değiştirmek için kullanılır.


Private Sub Button2_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link] = 200
[Link] = 150
End Sub

Tabindex: Butonun TAB tuşu sırasının ayarlanmasını sağlar. Form üzerinde iken Tab tuşuna
bastıkça, Tabindex değerine göre bir sonraki denetim seçilir (aktif olur)

Tabstop: Tab tuşuna basılınca butonun seçilip seçilmemesini sağlar.

Sayfa 10 / 30
KONTROLLER - I

Textalign: Buton üzerinde gösterilecek metnin konumunun seçilmesini sağlar.

Textimagerelation: Buton üzerinde gösterilecek metin ile resmin birbirlerine göre öncelik
sıralasının seçilmesini sağlar

Usemnemonic: Alt tuşu ile birlikte basılacak karakteri belli etmek üzere karakterin altı çizili
çıkmasını sağlar. Bunun için & (ampersand) karakterinin kullanılması gerekir.

Visible: Butonun gösterilip gösterilmemesinin ayarlanmasını sağlar.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = Not ([Link])
[Link] = True
[Link] = False

End Sub
OLAYLAR

Click : Bir Butonun click olayı Buton üzerine tıklamadır.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
MsgBox("click olayı gerçekleşti")
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
MsgBox("hello world. The time is " & Now)
End Sub

F5 tuşuna basarak projeyi çalıştırın.

NOT Yazdığınız kodun ne anlama geldiğini belirtmek için yorum satırları kullanmak, kodları
okumayı kolaylaştırır. Yorum satırları tek tırnak ' ile başlayarak yazılmalıdır.
' MsgBox metodu ile kullanıcıya Merhaba diyoruz.
' Now özelliği ile o andaki saat ve gün
' değerlerini de kullanıcıya gösteriyoruz.

Autosizechanged: Butonun autosize özelliği değiştirildiğinde meydana gelir.

Private Sub Button1_AutoSizeChanged(ByVal sender As Object,


ByVal e As [Link]) Handles [Link]
MsgBox("jhjhh")
End Sub

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = True

Sayfa 11 / 30
KONTROLLER - I

End Sub
Backcolorchanged: Butonun arka plan rengi değiştirildiğinde meydana gelir.
Gotfocus: butona odaklanıldığında meydana gelir
Private Sub Button1_GotFocus(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
i = i + 1
[Link] = i
End Sub
Leave: buton odaklılığını kaybettiğinde meydana gelir

Keydown: Butona odaklanıldığında (buton aktif iken) klavyeden bir tuşa basılması olayıdır

Keypress: Butona odaklanıldığında (buton aktif iken) klavyeden bir tuşa basılması olayıdır

Private Sub Buton1_KeyPress(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
Static i As Byte
i = i + 1
If [Link] = Chr(27) Then
MsgBox(i - 1 & " tuş tıklandı")

End If
End Sub

Keyup: Butona odaklanıldığında (buton aktif iken) klavyeden basılan bir tuştan parmağımızı
çekme olayıdır.

Mousemove: fare imleci Buton üzerinde hareket ettirildiğinde oluşur.


Public Class Form1
Dim i As Integer
Private Sub Button1_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]

End Sub

Private Sub Button1_MouseMove(ByVal sender As Object,


ByVal e As [Link]) Handles
[Link]

i = i + 1
[Link] = i
End Sub
End Class

Mousedown ve mouseup olayları: mousedown mouse’ın bir butonuna basıldığı anda


gerçekleşir. Bırakıldığında ise mouseup olayı gerçekleşir. Mousedown ile click olayı

Sayfa 12 / 30
KONTROLLER - I

arasındaki fark şudur: mousedown olayı Mouse butonuna basıldığı anda gerçekleşir. Click
olayının gerçekleşmesi için ise Mouse butonunun basıldıktan sonra bırakılması gerekir.
Hem mousedown hem de mouseclick olayları birlikte kullanılmışsa önce Mousedown sonra
Mouseclick olayları tetiklenir.

Mouseenter: fare imleci Buton üzerine girdiği anda meydana gelir.

Mousehover: fare imleci Buton üzerinde belli bir süre hareketsiz bekletildiğinde meydana
gelir.

Mouseleave: fare imleci buton üzerinden ayrıldığında meydana gelir.


Private Sub Button1_MouseLeave(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
MsgBox("leave")

End Sub
Mousewheel: Buton üzerindeyken; fare tekeri çevrildiğinde meydana gelir.
Private Sub Button1_MouseWheel(ByVal sender As Object, ByVal e
As [Link]) Handles
[Link]
i = [Link] / 120 + i
[Link] = i

End Sub

Resize: Butonun boyutları değiştirildiğinde meydana gelir.


public Class Form1

Dim i As Integer
Dim w As Integer

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
w = 5
[Link] = w + [Link]
End Sub

Private Sub Button2_Resize(ByVal sender As Object, ByVal e


As [Link]) Handles [Link]

i = i + 1
[Link] = i

End Sub
End Class 'Form1

Sayfa 13 / 30
KONTROLLER - I

Ör:
Textbox1 ve Textbox2 metin kutularına 2 sayı girilecek (textbox1 [Link]ı textbox2 2. sayı
olacak). Topla adlı butona basıldığında textbox1 ile textbox2 toplanacak, Çıkar adlı butona
basıldığında textbox1’den textbox2 çıkarılacak ve her iki durumda da sonuç textbox3’e
yazılacak.
Yukarıda belirtilen işleri yapan bir program yazın.

Proje için form tasarımı aşağıdadır.

LABEL (ETİKET)
Label genelde form üzerine sabit yazılar yazarak kullanıcıyı bilgilendirmek için kullanılan
kontroldür. Genellikle diğer kontroller ile ilgili bilgi vermek için kullanılır.
ÖZELLİKLER
Autosize: Form üzerine bir etiket yerleştirildiğinde etiket üzerinde görüntülenecek
yazının büyüklüğüne göre etiketin boyutu Mouse ile belirlenir. Etiket üzerinde
görüntülenecek yazının etiket boyutundan büyük olduğu durumlarda yazının sadece etiket
boyutuna sığan kısmı görüntülenir. Diğer kısımları kesilir. Bu durumu ortadan kaldırmak için
etiketin autosize özelliği true olarak düzenlenir.

[Link] = True

Backcolor: Backcolor ile arka plan rengi belirlenir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = [Link]

Sayfa 14 / 30
KONTROLLER - I

End Sub

Borderstyle: Çerçevenin türünün belirlendiği özelliktir. 3 farklı değer alır.


none : Herhangi bir çerçeve sözkonusu değildir.
Fixed single: 2 boyutlu çerçeve görünümü
Fixed 3D: 3 boyutlu görünüm alır.

Private Sub Button3_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Cursor: Farenin label üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.

[Link] = [Link]

Dock: Label’ın form üzerinde bulunacağı konumun seçilmesini sağlar.

Sayfa 15 / 30
KONTROLLER - I

Label’ın bulunacağı yer solda belirtilen alanların birine tıklanarak seçilir.

Dock özelliği kod ile aşağıdaki gibi değiştirilebilir.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Font: Font özelliği birçok alt özellik taşır. Bunlardan bazıları


en sık kullanılan özelliklerdir
Name: Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.

Size: Karakterlerin büyüklüğünü belirler. Varsayılan büyüklük 8,5 değerindedir.

Bold (Kalın): Yazının kalın tipte olmasını belirler.

Italic (İtalik): Yazının italik tipte olmasını belirler.

UnderLine (Altı çizgili): Yazının altı çizgili olmasını belirler.

Etiket üzerindeki yazının özellikleri çalışma zamanında kodlarla düzenlenebilir.


Kodlama şekli aşağıdaki örneklere benzer.

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = New Font("arial", 26, _
[Link], [Link])
End Sub

Forecolor: Bu özellik label üzerindeki yazı rengini belirlemek için kullanılır.

[Link] = [Link]

İmage: label için resim eklememizi sağlar. Ancak burada birkaç durum vardır. Özelliğin
üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona
tıkladığımızda aşağıdaki pencere açılır.

Sayfa 16 / 30
KONTROLLER - I

Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = [Link]("d:\[Link]")

End Sub

İmagealign: Resmin label üzerindeki yerini belirlemek için kullanılır.

Location: label’ın form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]

Sayfa 17 / 30
KONTROLLER - I

[Link] = 150
[Link] = 200
End Sub

Locked: True olarak seçildiğinde, tasarım anında, label’ın taşınması ve boyutlarının


değiştirilmesini kilitler. Bu durumu bildirmek üzere denetimin sol üst köşesinde bir anahtar
simgesi belirir.

Name: Label’ın adının verileceği özellik. Default değeri label1’dir

Size: label’ın genişlik ve yüksekliğini değiştirmek için kullanılır.


Private Sub Button2_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link] = 200
[Link] = 150
End Sub

Text: Bu özellikle etiket üzerinde görüntülenecek metin belirlenir.

Textalign: Yazının Label kontrolü üzerinde nerede duracağını belirler

Visible: label’ın gösterilip gösterilmemesinin ayarlanmasını sağlar.

Örnek:
Metin kutusuna yazılan metinlerin butona tıklandığında etiketin text özelliğine aktaran
bir program yazın

Proje için form tasarımı aşağıdaki şekildedir.

Sayfa 18 / 30
KONTROLLER - I

Örnek:
Metin kutusuna yazılan metinleri button1 butonuna tıklandığında; label1 etiketinin text
özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini Arial, yazı büyüklüğünü 50 ve yazı
rengini kırmızı yapan;
Metin kutusuna yazılan metinleri Button2 butonuna tıklandığında; label2 etiketinin
text özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini times new roman, yazı büyüklüğünü
50 ve yazı rengini mavi yapan;
Metin kutusuna yazılan metinleri Button3 butonuna tıklandığında; label3 etiketinin
text özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini Tahoma, yazı büyüklüğünü 50 ve
yazı rengini sarı yapan bir program yazın

Proje için form tasarımı aşağıdaki şekildedir.

TEXT BOX (METİN KUTUSU)

En sık kullanılan kontrollerden bir tanesi de metin kutularıdır. Metin kutuları


kullanıcının dışarıdan programa veri girmesi veya programdan dışarıya çıktı olarak veri
aktarılması amacıyla kullanılır.

ÖZELLİKLER

Text: Metin kutusuna program içinden bilgi yazdırmak veya dışarıdan kullanıcının
girdiği bilgileri okumak için kullanılır

Örneğin
[Link] = “Bu kısma adınızı yazınız”
Kodu textbox1 isimli metin kutusuna örnekte gösterilen metni yazar.

Bilgi=[Link]

Sayfa 19 / 30
KONTROLLER - I

Yukarıda gösterildiği gibi kullanıcı tarafından metin kutusuna girilen bilgiler de bir
değişkene atanarak kullanılır. Yukarıdaki dizilime göre Textbox1 isimli metin kutusuna
yazılan değer bilgi adlı değişkene aktarılır.

İsim = Textbox1. Text metin kutusunun


Text Özelliği

Değişken metin
İsmi kutusunun
ismi

yukarıdaki dizilimle metin kutusundaki değer isim değişkenine aktarılır.

[Link] = isim

Yukarıdaki dizilimle isim değişkeninin değeri metin kutusuna aktarılır.

( Sağdaki soldakine aktarılır)

X=Y (Y’nin içeriği X’e aktarılır)

Y=X (X’in içeriği Y’ye aktarılır)

Ör:

Kullanıcı dışarıdan Textbox1 adlı metin kutusuna ismini girecek ve butona tıklanınca
bu isim mesaj kutusu (msgbox) ile ekranda görüntülenecek. Bu işleri yapan programı yazın
Proje için form tasarımı aşağıdaki gibidir

Sayfa 20 / 30
KONTROLLER - I

Name: Metin kutusunun ismini değiştirmek için kullanılır. Metin kutularına ne iş için
kullanıldıklarını hatırlatacak nitelikte isimler verilmelidir. Kodlama işlemini yaparken
kontrolün sadece isminden tanınabilmesi gerekir. Aksi halde zaman kaybına neden olur.

Txtisim. Text = “Muzaffer”


Txtkimlikno. Text = “k98273”
Txttelefon. Text = “6137675”

Acceptstab: çok satırlı metin kutularında (multiline özelliği true olduğunda) Tab tuşuna
basınca bir sonraki denetime geçmek yerine bir sekme boşluğu bırakılmasını sağlar.

Backcolor: Metin kutusunun arkaplan renginin belirlenmesinde kullanılır.

[Link] = [Link]

Borderstyle: Çerçevenin türünün belirlendiği özelliktir. 3 farklı değer alır.


none : Herhangi bir çerçeve sözkonusu değildir.
Fixed single: 2 boyutlu çerçeve görünümü
Fixed 3D: 3 boyutlu görünüm alır.

Private Sub Button3_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Charactercasing: Metin kutusuna yazılacak karakterlerin tamamının büyük (upper),


tamamının küçük (lower) veya normal olacak şekilde ayarlanmasını sağlar.

Sayfa 21 / 30
KONTROLLER - I

Cursor: Farenin textbox üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.

[Link] = [Link]

Dock: Metin kutusunun form üzerinde bulunacağı konumun seçilmesini sağlar.


Metin kutusunun bulunacağı yer solda belirtilen alanların birine tıklanarak
seçilir.

Sayfa 22 / 30
KONTROLLER - I

Yandaki Textbox1 için dock özelliği Top


olarak ayarlanmıştır.

Dock özelliği kod ile aşağıdaki gibi değiştirilebilir.


Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = [Link]
End Sub
End Class

Enabled: Metin kutusuna veri girişi yapılıp yapılmayacağını belirler. Ancak kodla yapılan
girişler kullanılabilir. Enabled özelliği False olarak belirlenmiş metin kutusuna giriş yapılmaz.
Ör:
Textbox1. Enabled = True
Textbox1. Enabled = False

Font: Metin kutusunun üzerine yazılacak yazının tipi ve boyutu Font penceresinden
düzenlenir.
Font penceresi tüm kontroller için ortaktır.
Ör:
Public Class Form1
Private Sub Button1_Click(ByVal sender As [Link], ByVal e
As [Link]) Handles [Link]
Dim fac As String
fac = "arial"
[Link] = New Font("times new roman", 16, _
[Link], [Link])
End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link] = New Font("arial", 26, _
[Link], [Link])
Sayfa 23 / 30
KONTROLLER - I

End Sub
End Class

Forecolor: Bu özellik metin kutusu üzerindeki yazı rengini belirlemek için kullanılır.

[Link] = [Link]

Location: metin kutusunun form üzerindeki konumunu belirler. İlk sayı formun sol
kenarından uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = 200
[Link] = 300

End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Locked: True olarak seçildiğinde, tasarım anında, metin kutusunun taşınması ve boyutlarının
değiştirilmesini kilitler. Bu durumu bildirmek üzere denetimin sol üst köşesinde bir anahtar
simgesi belirir.

Maximumsize: metin kutusunun maksimum ne kadar büyütülebileceğini belirtir.

Minimumsize: metin kutusunun minimum ne kadar küçültülebileceğini belirtir.

Maxlength: metin kutusuna yazılacak maksimum karakter sayısını belirler.


[Link] = Val([Link])

multiline: metin kutusuna girilecek yazının çok satırlı olmasını sağlar. Değeri true olarak
ayarlandığında metin girilirken enter tuşuna basıldığında bir sonraki satıra geçilir.

Passwordchar: Şifre karakteri belirlenmesini sağlar. Metin kutusuna yazılan karakterler şifre
karakteri olarak belirlenen karakter olarak gösterilir. Tek satırlı metin kutularında geçerlidir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = "*"
End Sub

Sayfa 24 / 30
KONTROLLER - I

Readonly:Metin kutularının sadece okunabilir olarak ayarlanmasını sağlar. Bu durumdaki


metin kutusuna veri girişi yapılamaz.

Scrollbars: Çok satırlı (multiline özelliği true olan) metin kutularında yatay, dikey veya hem
yatay hem de dikey kaydırma çubuklarının görünmesini sağlar. Wordwrap özelliği true
olduğunda yatay kaydırma çubuğu eklenmez.

Size: Metin kutusunun genişlik ve yüksekliğini değiştirmek için kullanılır. Yüksekliğin


değişmesi için multiline özelliğinin true olması gerekir.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = 200
[Link] = 150
End Sub

Tabindex: Metin kutusunun TAB tuşu sırasının ayarlanmasını sağlar. Form üzerinde iken
Tab tuşuna bastıkça, Tabindex değerine göre bir sonraki denetim seçilir (aktif olur)

Tabstop: Tab tuşuna basılınca Metin kutusunun seçilip seçilmemesini sağlar.

Textalign: Metin kutusu üzerinde gösterilecek metnin konumunun seçilmesini sağlar.

Wordwrap: çok satırlı metin kutularında sözcük kaydırmanın otomatik yapılıp


yapılmayacağını belirler.

Visible: metin kutusunun gizlenip gizlenmeyeceğini belirler.

OLAYLAR

Textchanged: metin kutusunun metni değiştiğinde tetiklenir.

Click: metin kutusu üzerinde farenin tuşuna basıldığında tetiklenir.

Gotfocus: metin kutusuna odaklanıldığında meydana gelir


Private Sub Button1_GotFocus(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
i = i + 1
[Link] = i
End Sub
Leave: metin kutusuna odaklılığını kaybettiğinde meydana gelir

public Class Form1

Sayfa 25 / 30
KONTROLLER - I

Private Sub TextBox1_GotFocus(ByVal sender As Object,


ByVal e As [Link]) Handles [Link]
' If the TextBox contains text, change its foreground
and background colors.
If [Link] <> [String].Empty Then
[Link] = [Link]
[Link] = [Link]

End If
End Sub 'textBox1_Enter

Private Sub textBox1_Leave(ByVal sender As Object, ByVal e


As [Link]) Handles [Link]
' Reset the colors and selection of the TextBox after
focus is lost.
[Link] = [Link]
[Link] = [Link]
End Sub 'textBox1_Leave

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

End Sub
End Class 'Form1

Butondaki olayların çoğu metin kutusu içinde geçerlidir.

METOTLAR

Appendtext: metin kutusundaki metne parametre olarak verilen metni ekler.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link]("merhaba")
End Sub

Clear: metin kutusundaki metni siler

Copy: metin kutusunda seçilen metni panoya kopyalar.

Cut: metin kutusunda seçilen metni panoya taşır.

Paste: panoya kopyalanan içeriği metin kutusuna yapıştırır.

Sayfa 26 / 30
KONTROLLER - I

Ör:

Public Class Form1

Private Sub Button5_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link] = "TARSUS ÜNİVERSİTESİ TARSUS MESLEK
YÜKSEKOKULU"
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link]()
End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link]()
End Sub

Private Sub Button3_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link]()
End Sub

Private Sub Button4_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link]()
End Sub
End Class

Select: metin kutusunda belirtilen metnin seçilmesini sağlar.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link](2, 3)

Sayfa 27 / 30
KONTROLLER - I

[Link]()
[Link]()
End Sub

Selectall: metin kutusundaki tüm metnin seçilmesini sağlar.

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link]()
[Link]()
[Link]()

End Sub

Undo: metin kutusu üzerinde en son yapılan işlemlerin geri alınmasını sağlar.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link]()
[Link]()
[Link]()
End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link]()
End Sub

Textlength: metin kutusu içerisindeki metnin karakter sayısını verir.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]

End Sub

Örnek: Metin kutusuna bir tam sayı girilsin ve butona tıklandığında 1’den bu sayıya kadar
olan tam sayıların toplamını çıktı kutusunda görüntüleyin.

Proje için form tasarımı aşağıdaki gibidir.

Sayfa 28 / 30
KONTROLLER - I

Örnek: Textbox’taki değer değiştiğinde msgbox ile ekrana “Değer Değişti” şeklinde mesaj
veren bir program yazın.

Proje için form tasarımı aşağıdaki gibidir.

Örnek: Textbox’tan şifre girilsin ve şifrenin doğru olup olmadığı test edilsin. Doğruysa
form üzerineki label1’e doğru şifre, yanlışsa yanlış şifre yazılsın. (Şifre “TARSUS” olsun)

Proje için form tasarımı aşağıdaki gibidir.

Sayfa 29 / 30
KONTROLLER - I

Ör:
Text1 adlı metin kutusuna 0-100 arasında sayı girilecektir. Bu aralık dışında sayı girilirse
msgbox ile “sayı 1-100 arasında olmalı” şeklinde mesaj veren bir program yazın
Yol gösterme: (textchanged olayını kullanarak yapabilirsiniz)

Proje için form tasarımı aşağıdaki gibidir.

Sayfa 30 / 30
KONTROLLER - I

WİNDOWS FORM KONTROLLERİ


Nesneye dayalı programlamanın temelinde nesneler (object) vardır. VB, nesneleri
tanımlamak üzere sınıfları kullanmaktadır. Her sınıfın kendine has alanları (fields),
yordamları (procedures), özellikleri (properties), metotları (methods) vardır. Bunlar sınıf
içerisinde tanımlanmıştır ve o sınıfın üyeleri olarak adlandırılır.

Kontroller (Denetimler) Toolbox üzerinde bulunan ve arabirim oluşturmak için


kullanılan nesnelerdir.

Arabirim programın kullanıcıya görünen yüzüdür. Diğer bir deyişle arabirim program
kodları ile kullanıcı arasındaki iletişimi sağlar. Bu nedenle arabirim oluşturmak kod yazmak
kadar önemlidir. Ne kadar çok ne kadar güzel kod yazarsanız yazın kullanıcı bu kodlardan
arabirim sayesinde yararlanabilir. Buda demek oluyor ki kötü bir arabirim kodların yeterince
kullanılamaması anlamına gelir.

Teknik özelliklerinin yanında arabirimin görünümü de çok önemlidir. Form üzerine


düzensizce yerleştirilmiş kontroller programın görsel bütünlüğünü bozacağı gibi, programın
kullanımını da zorlaştıracaktır. Bugün birçok şirket web sayfalarının yalnızca görünümü için
binlerce dolar harcar.

Kodlama işlemi programcılığın temelidir ve kodlama işlemi kontrollere bağlıdır. İyi


bir kodlama dolayısıyla iyi bir program için kontrollerin iyi tanınması gerekir. Bir kontrolün
işlevini tam olarak öğrenmeden o kontrolün olaylarını, metotlarını ve özelliklerini bilmeden o
kontrole ait kod yazılamaz.
Metotlar nesnelere doğrudan yaptırmak istediğimiz işleri belirtmek için kullanılır.

Metotlar Kontrol Olaylar


(methods) (events)

Özellikler
(properties)

Formlar kontrollere zemin görevi görür. Bu yüzden kontrollere başlamadan önce


formlar konusu çok iyi öğrenilmelidir.

GENEL BİLGİLER

Kontroller araç kutusu (Tool box) üzerinde bulunur.


Kontrolleri tek tek incelemeye başlamadan önce kontrol özelliklerinden biraz
bahsedelim. Her kontrolün bir çok özelliği vardır. Bu özelliklerin bir kısmı kontrolün
kendisine özeldir. Bir kısmı ise diğer kontrollerde de bulunan ortak özelliklerdir. Örneğin
name özelliği bir kontrolün ismini belirtir ve tüm kontrollerde ortaktır. Bunun yanında
interval özelliği yalnızca timer kontrolüne özgü bir özelliktir.

Kontrollerin tasarım anında büyüklük ve yerleri size ve location özellikleri ile


belirlenebileceği gibi, fare ile de ayarlanabilir. Tasarım sayfası, formun ve üzerindeki
kontrollerin görünümlerini kolay bir şekilde değiştirmeyi sağlar. Kod sayfasında ise kodlar
yazılır.

Sayfa 1 / 19
KONTROLLER - I

BUTONLAR (BUTTONS)
En çok kullanılan denetimlerdendir. Dolayısıyla hemen her Windows uygulamasında
kullanılmaktadır. Butonlar, düğme şeklinde genellikle tıklanarak kullanılan denetimlerdir.
Kullanıcı programa bir işlem yaptırmak istediğinde ilgili butonu tıklatır. Geri planda yer alan
VB kodu devreye girerek çalışır. Butonlar sayesinde programla etkileşim kolay bir şekilde
sağlanmış olur.

BUTON ÖZELLİKLERİ

Anchor: butonun form üzerindeki yerinin yukarı (top), aşağı (bottom), sol (left) ve sağ (right)
kenarlarından birine sabitlenmesini sağlar. Örneğin butonun anchor özelliği bottom olarak
seçilmişse, buton alt kenarından sabitlenir. Formun alt kenarı ile buton arasındaki mesafe hep
sabit kalır. Buton aşağı yukarı doğru büyütülüp küçültülse bile bu mesafe değişmez.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Name Özelliği: Form üzerine bir buton yerleştirdiğinizde Visual Basic butonun ismini
otomatik olarak button1 olarak belirler. Siz name özelliğinden butonun ismini
değiştirebilirsiniz. Butonları isimlendirirken ismin başına o kontrolün bir buton olduğunu
belirten btn harfleri eklenir. btnbasla veya btnbitir gibi.

Text Özelliği: Buton üzerinde görüntülenecek yazının (başlık) belirlenmesinde


kullanılır. Butonun başlığı doğal olarak butonun yapacağı işi belirtir nitelikte olmalıdır. Başlık
belirlerken & karakterinin kullanımı butona Alt tuşu ile ulaşılmasını sağlar. Örneğin Text
özelliği &Kaydet olarak belirlenmiş bir butona Alt+K tuşları ile ulaşılır. Yani butona
tıklanmış gibi olur. & karakteri kendisinden sonra gelen harf ile Alt tuşunun birlikte
kullanılabilmesini sağlar. Buton üzerinde Alt tuşu ile birlikte kullanılacak harfin altı çizilir.
Harfin altı çizili görünmesi için butonun usemnemonic özelliğinin True olması gerekir.

[Link] = "abc"

AutoEllipsis: Butonun text özelliğine yazılan metin butonun boyutlarından fazla olunca
görünmeyen kısmı belli etmek üzere elips (…) işaretinin çıkıp çıkmayacağını belirtir. True
veya false değerini alır. True değeri elips (…) işaretinin çıkacağını belirtir.

Autosize: kontrolün text özelliğine uzunca bir şey yazdığımızı farz edelim ve bu
yazdıklarımız butonun boyutundan büyük olsun. Eğer autosize özelliği true ise buton o
yazının uzunluğu kadar otomatik olarak genişler.

Sayfa 2 / 19
KONTROLLER - I

Autosizemode: Autosize özelliğinin ne şekilde çalışacağının seçilmesini sağlar. Growonly


seçeneği butonun yalnızca büyütüleceğini belirtir. Growandshrink seçeneği ise butonun hem
büyütülebileceğini hem de küçültülebileceğini belirtir

Backcolor
Butonun arkaplan renginin belirlenmesinde kullanılır.
[Link] = [Link]

Backgroundimage: butonun arka planına resim eklememizi sağlar. Ancak burada birkaç
durum vardır. Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza
çıkar. Bu butona tıkladığımızda aşağıdaki pencere açılır.

Sayfa 3 / 19
KONTROLLER - I

Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]("d:\[Link]")
End Sub

Backgroundimagelayout: Backgroundimage ile eklenilen resmin nasıl yerleştirileceğini


düzenlemek için kullanılır. 5 farklı değer alır: none, center, stretch, tile, zoom

None: resmin hangi kısmı butona geliyorsa o kısmı butona eklenir. Yani resmin boyutu kadar
eklenir.

Tile: resim yan yana ve üst üste eklenir. butonun boyutu artırıldığında bu durum görülür.

Center: Resmin ortalanmasını sağlar.

Stretch: Resmin boyutu ne olursa olsun resmi butona sığdırır.

Zoom: resmi yaklaştırır.

[Link] = [Link]

Sayfa 4 / 19
KONTROLLER - I

Cursor: Farenin buton üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.

[Link] = [Link]

Private Sub Button3_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Dialogresult: modal veya dialog şeklinde gösterilen formlarda, butona tıklandığı anda ana
forma gönderilecek değerin seçilmesini sağlar. Aşağıdaki değerleri alabilir.

Geriye gönderilen (ana forma gönderilen) değer aşağıdaki örnekte


gösterildiği gibi işlenebilir.

Sayfa 5 / 19
KONTROLLER - I

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link]()
If [Link] = [Link] Then
MsgBox("ok")
Else
MsgBox("no")
End If

End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link]()
If [Link] = [Link] Then MsgBox("ok")

If [Link] = [Link] Then


MsgBox("cancel")
If [Link] = [Link] Then
MsgBox("abort")
If [Link] = [Link] Then
MsgBox("ignore")
If [Link] = [Link] Then MsgBox("no")
If [Link] = [Link] Then MsgBox("yes")
If [Link] = [Link] Then
MsgBox("retry")

Sayfa 6 / 19
KONTROLLER - I

End Sub

Dock: butonun form üzerinde bulunacağı konumun seçilmesini sağlar.


Butonun bulunacağı yer solda belirtilen alanların birine tıklanarak seçilir.

Yandaki buton1 düğmesi için dock özelliği


bottom olarak ayarlanmıştır.

Dock özelliği kod ile aşağıdaki gibi değiştirilebilir.


Private Sub Button2_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Enabled Özelliği: Butonun kullanılıp kullanılmayacağını belirler. Enabled özelliği False


olarak belirlenmiş buton kullanılmaz
Ör:
Button1. Enabled = True
Button1. Enabled = False

Ör:
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = False
End Sub

Private Sub Button2_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = True
End Sub

Sayfa 7 / 19
KONTROLLER - I

Private Sub Button3_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
MsgBox("merhaba")
End Sub

Enabled özelliği False olarak belirlenen bir buton; gri, silik bir görünüm alır.

Flatstyle: Butonun görünüm tipinin seçilmesini sağlar.

Flatappearance: Flatstyle özelliği Flat olarak seçildiğinde aktif olur. Butonun kenar
çizgilerinin rengi ve kalınlığı ile imleç buton üzerine getirildiğinde ve tıklandığı anda butonun
renginin seçilmesini sağlar.

Font: Butonun üzerine yazılacak yazının tipi ve boyutu Font penceresinden düzenlenir.

Font penceresi tüm kontroller için ortaktır.

Font özelliği birçok alt özellik taşır. Bunlardan bazıları en sık kullanılan özelliklerdir

Name: Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.

Size: Karakterlerin büyüklüğünü belirler. Varsayılan büyüklük 8,5 değerindedir.

Bold (Kalın): Yazının kalın tipte olmasını belirler.

Italic (İtalik): Yazının italik tipte olmasını belirler.

UnderLine (Altı çizgili): Yazının altı çizgili olmasını belirler.

Ör:
Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
Dim f As String
f = "arial"
[Link] = New Font("times new roman", 16, _
[Link], [Link])
Sayfa 8 / 19
KONTROLLER - I

End Sub

Private Sub Button2_Click(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link] = New Font("arial", 26, _
[Link], [Link])
End Sub
End Class

Forecolor: Bu özellik buton üzerindeki yazı rengini belirlemek için kullanılır.

[Link] = [Link]

İmage: Butonun arka planına resim eklememizi sağlar. Ancak burada birkaç durum vardır.
Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona
tıkladığımızda aşağıdaki pencere açılır.

Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = [Link]("d:\[Link]")
End Sub

Sayfa 9 / 19
KONTROLLER - I

Not: BackgroundImage duvar kağıdı gibidir, tüm arka planı kaplar. Arka plan için desenler
veya tam resimler kullanmalısınız. Sadece bir simge göstermeye çalışıyorsanız [Link]
kullanın [Link] özelliği düğme denetiminde görüntülenen görüntüdür.
BackgroundImage denetimin arka planında görüntülenecek görüntüyü temsil eden bir
görüntüdür. Bu sayede bir BackgoundImage ve bir [Link] ayarlayabilirsiniz.
[Link], BackgroundImage'ın üstüne yerleştirilecektir

İmagealign: Resmin buton üzerindeki yerini belirlemek için kullanılır.

Location: Butonun form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub

Locked: True olarak seçildiğinde, tasarım anında, butonun taşınması ve boyutlarının


değiştirilmesini kilitler. Bu durumu bildirmek üzere denetimin sol üst köşesinde bir anahtar
simgesi belirir.

Padding: Butonun sol, sağ, üst ve alt kenarlardan ne kadar boşluk bırakılacağını belirler.

Size: butonun genişlik ve yüksekliğini değiştirmek için kullanılır.


Private Sub Button2_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link] = 200
[Link] = 150
End Sub

Tabindex: Butonun TAB tuşu sırasının ayarlanmasını sağlar. Form üzerinde iken Tab tuşuna
bastıkça, Tabindex değerine göre bir sonraki denetim seçilir (aktif olur)

Tabstop: Tab tuşuna basılınca butonun seçilip seçilmemesini sağlar.

Sayfa 10 / 19
KONTROLLER - I

Textalign: Buton üzerinde gösterilecek metnin konumunun seçilmesini sağlar.

Textimagerelation: Buton üzerinde gösterilecek metin ile resmin birbirlerine göre öncelik
sıralasının seçilmesini sağlar

Usemnemonic: Alt tuşu ile birlikte basılacak karakteri belli etmek üzere karakterin altı çizili
çıkmasını sağlar. Bunun için & (ampersand) karakterinin kullanılması gerekir.

Visible: Butonun gösterilip gösterilmemesinin ayarlanmasını sağlar.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = Not ([Link])
[Link] = True
[Link] = False

End Sub
OLAYLAR

Click : Bir Butonun click olayı Buton üzerine tıklamadır.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
MsgBox("click olayı gerçekleşti")
End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
MsgBox("hello world. The time is " & Now)
End Sub

F5 tuşuna basarak projeyi çalıştırın.

NOT Yazdığınız kodun ne anlama geldiğini belirtmek için yorum satırları kullanmak, kodları
okumayı kolaylaştırır. Yorum satırları tek tırnak ' ile başlayarak yazılmalıdır.
' MsgBox metodu ile kullanıcıya Merhaba diyoruz.
' Now özelliği ile o andaki saat ve gün
' değerlerini de kullanıcıya gösteriyoruz.

Autosizechanged: Butonun autosize özelliği değiştirildiğinde meydana gelir.

Private Sub Button1_AutoSizeChanged(ByVal sender As Object,


ByVal e As [Link]) Handles [Link]
MsgBox("jhjhh")
End Sub

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = True

Sayfa 11 / 19
KONTROLLER - I

End Sub
Backcolorchanged: Butonun arka plan rengi değiştirildiğinde meydana gelir.
Gotfocus: butona odaklanıldığında meydana gelir
Private Sub Button1_GotFocus(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
i = i + 1
[Link] = i
End Sub
Leave: buton odaklılığını kaybettiğinde meydana gelir

Keydown: Butona odaklanıldığında (buton aktif iken) klavyeden bir tuşa basılması olayıdır

Keypress: Butona odaklanıldığında (buton aktif iken) klavyeden bir tuşa basılması olayıdır

Private Sub Buton1_KeyPress(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
Static i As Byte
i = i + 1
If [Link] = Chr(27) Then
MsgBox(i - 1 & " tuş tıklandı")

End If
End Sub

Keyup: Butona odaklanıldığında (buton aktif iken) klavyeden basılan bir tuştan parmağımızı
çekme olayıdır.

Mousemove: fare imleci Buton üzerinde hareket ettirildiğinde oluşur.


Public Class Form1
Dim i As Integer
Private Sub Button1_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]

End Sub

Private Sub Button1_MouseMove(ByVal sender As Object,


ByVal e As [Link]) Handles
[Link]

i = i + 1
[Link] = i
End Sub
End Class

Mousedown ve mouseup olayları: mousedown mouse’ın bir butonuna basıldığı anda


gerçekleşir. Bırakıldığında ise mouseup olayı gerçekleşir. Mousedown ile click olayı

Sayfa 12 / 19
KONTROLLER - I

arasındaki fark şudur: mousedown olayı Mouse butonuna basıldığı anda gerçekleşir. Click
olayının gerçekleşmesi için ise Mouse butonunun basıldıktan sonra bırakılması gerekir.
Hem mousedown hem de mouseclick olayları birlikte kullanılmışsa önce Mousedown sonra
Mouseclick olayları tetiklenir.

Mouseenter: fare imleci Buton üzerine girdiği anda meydana gelir.

Mousehover: fare imleci Buton üzerinde belli bir süre hareketsiz bekletildiğinde meydana
gelir.

Mouseleave: fare imleci buton üzerinden ayrıldığında meydana gelir.


Private Sub Button1_MouseLeave(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
MsgBox("leave")

End Sub
Mousewheel: Buton üzerindeyken; fare tekeri çevrildiğinde meydana gelir.
Private Sub Button1_MouseWheel(ByVal sender As Object, ByVal e
As [Link]) Handles
[Link]
i = [Link] / 120 + i
[Link] = i

End Sub

Resize: Butonun boyutları değiştirildiğinde meydana gelir.


public Class Form1

Dim i As Integer
Dim w As Integer

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
w = 5
[Link] = w + [Link]
End Sub

Private Sub Button2_Resize(ByVal sender As Object, ByVal e


As [Link]) Handles [Link]

i = i + 1
[Link] = i

End Sub
End Class 'Form1

Sayfa 13 / 19
KONTROLLER - I

Ör:
Textbox1 ve Textbox2 metin kutularına 2 sayı girilecek (textbox1 [Link]ı textbox2 2. sayı
olacak). Topla adlı butona basıldığında textbox1 ile textbox2 toplanacak, Çıkar adlı butona
basıldığında textbox1’den textbox2 çıkarılacak ve her iki durumda da sonuç textbox3’e
yazılacak.
Yukarıda belirtilen işleri yapan bir program yazın.

Proje için form tasarımı aşağıdadır.

LABEL (ETİKET)
Label genelde form üzerine sabit yazılar yazarak kullanıcıyı bilgilendirmek için kullanılan
kontroldür. Genellikle diğer kontroller ile ilgili bilgi vermek için kullanılır.
ÖZELLİKLER
Autosize: Form üzerine bir etiket yerleştirildiğinde etiket üzerinde görüntülenecek
yazının büyüklüğüne göre etiketin boyutu Mouse ile belirlenir. Etiket üzerinde
görüntülenecek yazının etiket boyutundan büyük olduğu durumlarda yazının sadece etiket
boyutuna sığan kısmı görüntülenir. Diğer kısımları kesilir. Bu durumu ortadan kaldırmak için
etiketin autosize özelliği true olarak düzenlenir.

[Link] = True

Backcolor: Backcolor ile arka plan rengi belirlenir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = [Link]

Sayfa 14 / 19
KONTROLLER - I

End Sub

Borderstyle: Çerçevenin türünün belirlendiği özelliktir. 3 farklı değer alır.


none : Herhangi bir çerçeve sözkonusu değildir.
Fixed single: 2 boyutlu çerçeve görünümü
Fixed 3D: 3 boyutlu görünüm alır.

Private Sub Button3_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Cursor: Farenin label üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.

[Link] = [Link]

Dock: Label’ın form üzerinde bulunacağı konumun seçilmesini sağlar.

Sayfa 15 / 19
KONTROLLER - I

Label’ın bulunacağı yer solda belirtilen alanların birine tıklanarak seçilir.

Dock özelliği kod ile aşağıdaki gibi değiştirilebilir.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Font: Font özelliği birçok alt özellik taşır. Bunlardan bazıları


en sık kullanılan özelliklerdir
Name: Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.

Size: Karakterlerin büyüklüğünü belirler. Varsayılan büyüklük 8,5 değerindedir.

Bold (Kalın): Yazının kalın tipte olmasını belirler.

Italic (İtalik): Yazının italik tipte olmasını belirler.

UnderLine (Altı çizgili): Yazının altı çizgili olmasını belirler.

Etiket üzerindeki yazının özellikleri çalışma zamanında kodlarla düzenlenebilir.


Kodlama şekli aşağıdaki örneklere benzer.

Private Sub Button2_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = New Font("arial", 26, _
[Link], [Link])
End Sub

Forecolor: Bu özellik label üzerindeki yazı rengini belirlemek için kullanılır.

[Link] = [Link]

İmage: label için resim eklememizi sağlar. Ancak burada birkaç durum vardır. Özelliğin
üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona
tıkladığımızda aşağıdaki pencere açılır.

Sayfa 16 / 19
KONTROLLER - I

Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = [Link]("d:\[Link]")

End Sub

İmagealign: Resmin label üzerindeki yerini belirlemek için kullanılır.

Location: label’ın form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]

Sayfa 17 / 19
KONTROLLER - I

[Link] = 150
[Link] = 200
End Sub

Locked: True olarak seçildiğinde, tasarım anında, label’ın taşınması ve boyutlarının


değiştirilmesini kilitler. Bu durumu bildirmek üzere denetimin sol üst köşesinde bir anahtar
simgesi belirir.

Name: Label’ın adının verileceği özellik. Default değeri label1’dir

Size: label’ın genişlik ve yüksekliğini değiştirmek için kullanılır.


Private Sub Button2_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link] = 200
[Link] = 150
End Sub

Text: Bu özellikle etiket üzerinde görüntülenecek metin belirlenir.

Textalign: Yazının Label kontrolü üzerinde nerede duracağını belirler

Visible: label’ın gösterilip gösterilmemesinin ayarlanmasını sağlar.

Örnek:
Metin kutusuna yazılan metinlerin butona tıklandığında etiketin text özelliğine aktaran
bir program yazın

Proje için form tasarımı aşağıdaki şekildedir.

Sayfa 18 / 19
KONTROLLER - I

Örnek:
Metin kutusuna yazılan metinleri button1 butonuna tıklandığında; label1 etiketinin text
özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini Arial, yazı büyüklüğünü 50 ve yazı
rengini kırmızı yapan;
Metin kutusuna yazılan metinleri Button2 butonuna tıklandığında; label2 etiketinin
text özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini times new roman, yazı büyüklüğünü
50 ve yazı rengini mavi yapan;
Metin kutusuna yazılan metinleri Button3 butonuna tıklandığında; label3 etiketinin
text özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini Tahoma, yazı büyüklüğünü 50 ve
yazı rengini sarı yapan bir program yazın

Proje için form tasarımı aşağıdaki şekildedir.

Sayfa 19 / 19
DÖNGÜLER
Döngüler belli bir program kodunun tekrar tekrar çalışmasını sağlar. Şarta bağlı ve şarta bağlı
olmayan şekilde döngü türleri bulunmaktadır.

FOR NEXT DÖNGÜ YAPISI

Bir işlemin kullanılır. Bir işlemin belli bir sayı kadar tekrarlandığı durumlarda kaç kez
yapılacağı ya da tekrarlanacağı biliniyorsa uygulanır. Şarta bağlı değildir.

Genel yazım şekli:

For döngü değişkeni [as veri tipi]= başlangıç to bitiş [step artırım]
İfadeler1
[exit for]
İfadeler2
Next döngü değişkeni

Not: exit for henüz döngü bitmeden döngüden çıkılmasını sağlar.

Yukarıdaki ifadede döngü değişkeni sayaç görevi görür ve döngünün kaç kez yapılacağını
belirtir. Döngü her tekrarlandığında sayaç değişkeninin değeri artırım miktarı kadar artar (
step parametresi kullanılmazsa 1 artar.). döngü değişkeni program içerisinde daha önce
tanımlanmamışsa döngü içerisinde as anahtar sözcüğü ve veri tipi belirtilerek tanımlanabilir.
Bu şekilde tanımlanan değişken sadece döngü içerisinde kullanılabilir. Döngü dışında
kullanılamaz. Başlangıç döngü değişkeninin başlangıç değerini, bitiş döngü değişkeninin bitiş
değerini tutar. Döngü başlangıç değerinden başlar, her döngü bitişinde artırım miktarı kadar
artarak
bitiş değerine ulaşıncaya kadar tekrar eder.
For Next döngü yapısının çalışma prensibi aşağıda adımlar halinde açıklanmıştır.

1. programın çalışması for deyimine geldiğinde döngü değişkeni başlangıç değerini alır.

2.1 döngü değişkeninin o anki değeri bitiş değeri ile karşılaştırılır.

2.2 döngü değişkeninin değeri bitiş değerinden küçük ya da eşitse döngü içindeki
yapılacak işlemler yapılır ve programın çalışması Next satırına geçer.

2.3 Döngü değişkeninin o anki değeri bitiş değerinden büyükse döngüden çıkılır ve
programın çalışması Next deyiminden sonraki kod satırından itibaren devam eder.

3 Programın çalışması next deyimine geldiğinde döngü değişkeninin değeri artırım kadar
artırılır ve 2.1 adımına dönülür.

Not: İç içe döngüler oluşturulabilir ancak döngüler birbirlerini kesmemelidir.

For i=1 to 44
Msgbox i
Next i
Bu üç satırlık kod ekrana 44 kez mesaj kutusu içinde sırayla 1 den 44 e kadar olan sayıları
yazdırmaya yetecektir. İ değişkeninin değeri döngünün her işleyişinde 1 artar.

For i= başla to bitir


msgbox i
Next

Başla ve bitir değeri klavyeden girilebilir


Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
Dim basla, bitir As Integer

basla = Val([Link])
bitir = Val([Link])

For i = basla To bitir


MsgBox(i)
Next i

End Sub

End Class

Step parametresinin kullanımı:


Step parametresi ile sayaçın artış miktarı belirlenir. Böylece sayaç başlangıç değerinden
bitiş değerine doğru birer birer değil step parametresi ile belirlenen miktara göre sayar.

Ör:
For i= 1 to 80 step 2
Msgbox “bu aralıktaki deyimler 40 defa yorumlanır”
Next i

Döngüde i sayacı 1 den 80 e kadar 2’şer 2’şer sayacaktır. Bu durumda döngü 80 defa değil
40 defa yorumlanacaktır.

Aynı mantıkla şu döngü yalnızca 1 defa yorumlanır.

For i=1 to 80 step 80


Msgbox “1 defa yorumlanır”
Next

7’nin katlarını bulmak için


For i=0 to 100 step 7
Msgbox i
next
ör:
1 den 100 e kadar olan sayılardan 1’den başlayarak 3’er 3’er sayan program.
For i=1 to 100 step 3
Msgbox i
Next

0 10 arası çift sayıların toplamı.


Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

Dim toplam As Integer


For i = 0 To 10 Step 2
toplam = i + toplam
Next
MsgBox("çift sayıların toplamı=" & toplam)

End Sub

End Class

Step parametresi negatif değerlerle de kullanılabilir


Ör:
for i=10 to 0 step -2
msgbox i
next i

step parametresi ondalıklı sayılarla da kullanılabilir

for i=0 to 5 step 0.5


msgbox i
msgbox “Bu aralıktaki ifadeler 11 defa yorumlanır”
next i
0, 0.5 , 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5 sırasıyla yazdırılır.

İç içe döngü kullanımı

Ör:

For i=1 to 4
For j=1 to 6
For k=1 to 2
.
.
.
Deyimler
.
.
.
Next k
Next j
Next i

Döngüler birbirini kesmez

Örnek: n sayısı pozitif bir tamsayı olmak üzere n değeri girdi kutusundan girildiğinde 1
den n e kadar olan tamsayıların toplamını hesaplayan ve sonucu çıktı kutusunda gösteren
bir programı for next döngü yapısını kullanarak yazın.

Proje için form tasarımı.

DO…LOOP DÖNGÜSÜ

Do… loop döngüsü For…next döngüsü ile birlikte en sık kullanılan döngüdür. Bu döngü
türünde For…next döngüsündeki gibi döngünün kaç kez icra edileceğinin bilinmesi
gerekli değildir.

Dizilim I
Do
Deyimler
.
.
.
Loop

Bu tür kullanımda herhangi bir durum belirtilmez ve döngü Ctrl + alt + Delete tuşlarıyla
durduruluncaya kadar durmadan tekrar eder.

Ör:

Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
Dim i As Integer
i = 0
Do
i = i + 1
MsgBox(i)

Loop

End Sub
End Class
Dizilim II

Do while şart
Deyimler
.
.
.
Loop

Visual Basic, döngü başındaki do while satırında belirlenen şartı test eder ve durumun
doğruluğuna göre döngüyü yorumlar veya atlar

Ör:
Do while A<18
‘ A Değişkeni 18’den küçük olduğunda döngü yorumlanır
Loop

Görüldüğü gibi do satırında belirlenen durum A değişkeninin 18’den küçük olmasıdır.


Program çalıştırıldığında Visual Basic Do While A<18 satırında belirlenen şartı test eder.
Şart doğru ise döngü yorumlanır. Yanlış ise döngü yorumlanmadan atlanır.

Ör:
Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
Dim i As Integer
i = 0
Do While i < 5
i = i + 1
MsgBox(i)

Loop

End Sub
End Class
WHİLE PARAMETRESİNİN KULLANIMI
Dizilim I

Do while durum
Deyimler
.
. Şart döngü başında test edilir.
.
Loop

Dzilim II

Do
Deyimler
.
. Şart döngü sonunda test edilir.
.
Loop While Durum

Örnek:

Do While sayı<1000
Sayı=sayı+1
Loop

Şart döngü sonunda da değerlendirilebilir.

Do
Sayı=sayı+1
Loop while sayı<1000
Şartın Döngünün başında ya da sonunda test edilmesi bazı farklılıklar yaratır.

Ör:
1

A=2
Do
msgbox “döngü yorumlandı”
Loop while A=9
2

A=2
do while A=9
msgbox “döngü yorumlanmadı”
loop

1. örnekte döngü 1 kez yapılır (Şart döngü sonunda test edildiği için) 2. örnekte ise
döngüye hiç girilmez. ( Şart başta test edildiği için)

UNTİL PARAMETRESİNİN KULLANIMI


Until parametresinin kullanım amacı while parametresi ile aynıdır. Yapısı da while
parametresine çok benzer.

Dizilim I

Do until durum
Deyimler
.
.
.
Loop

Dizilim II

Do
Deyimler
.
.
.
Loop until durum

Örnek

Do until i<99

‘ i değişkeni 99’dan küçük olana kadar


‘döngü yorumlanır
Msgbox i

Loop

Ör:

İ=1
Do until i>5
‘i değişkeni 5 ten küçük olduğu sürece döngüyü yorumla
İ=i+1
Loop

Bu döngü 5 defa yorumlanır. İ değeri 6 olduğunda döngü son bulur.


While parametresinde olduğu gibi test döngünün başında veya sonunda yapılabilir.
Ör:
1 2
‘İ=1 ‘İ=1
Do until i<5 Do
İ=i+1 i=i+1
msgbox “döngü” msgbox “döngü”
Loop loop until i<5

1 döngü hiç yorumlanmaz. 2. Döngü ise 2. döngü ise 1 kez yorumlanır.

While – Until parametrelerinin farkı

Bu parametrelerin kullanım amaçları birbirine çok benzediği için sıklıkla karıştırılır.

Şimdi biri while, diğeri until parametresi ile yazılmış, aynı işi yapan iki döngü yazalım.

1
i=0
do until i>44
‘ i 44 den büyük olana kadar döngüyü yorumlar
İ=i+1
loop

2
İ=0
Do while i<=44
‘ i 44 den küçük veya eşit olduğu sürece yorumlar
İ=i+1
Loop

Burada karşılaştırma operatörlerinden birinin “>” diğerinin “<=” olduğuna dikkat edin.

Ör:
N sayısı bir tam sayı olmak üzere n değeri girdi kutusundan girildiğinde 1 den n e kadar olan
tamsayıların toplamını hesaplayan ve sonucunu çıktı kutusunda gösteren bir VB programını
Do while Loop döngü yapısını kullanarak yazınız.

Proje için form tasarımı:


Ör:
N sayısı bir tam sayı olmak üzere n değeri girdi kutusundan girildiğinde n! değerini
hesaplayan ve sonucunu çıktı kutusunda gösteren bir VB programını Do Loop until döngü
yapısını kullanarak yazınız.

Proje için form tasarımı:


DÖNGÜDEN ÇIKMAK (EXİT İFADESİ)

Tamamlanmamış bir döngü içerisinden exit ifadesi kullanılarak anında çıkılabilir. Derleyici
exit ifadesi ile karşılaşınca derhal döngüyü sonlandırır. For döngüsünden çıkmak için Exit
For, Do döngüsünden çıkmak için Exit Do ifadeleri kullanılır.

Ör:
Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
For s As Byte = 1 To 15
MsgBox("sayacın değeri= " & s)
If s = 5 Then Exit For
Next
End Sub
End Class

Ör:
Public Class Form1
Dim s As Byte
Private Sub Button1_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]
s = 0
Do While s < 15
s = s + 1
MsgBox("sayacın değeri= " & s)
If s = 5 Then Exit Do
Loop
End Sub
End Class

DÖNGÜYE DEVAM ETMEK (CONTINUE İFADESİ)

Öyle durumlar olur ki döngü sonuna gelmeden döngü değişkeninin değerini artırarak
döngü başına dönmek gerekebilir. Bunun için “continue for” ve “continue do” ifadeleri
kullanılır.
Ör:

Public Class Form1


Dim s As Byte
Private Sub Button1_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]
s = 0
Do While s < 15
s = s + 1
If s = 5 Then Continue Do
MsgBox("sayacın değeri= " & s)

Loop
End Sub
End Class

Ör:
Public Class Form1
Dim s As Byte
Private Sub Button1_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]

For s = 1 To 15

If s = 5 Then Continue For


MsgBox("sayacın değeri= " & s)

Next
End Sub
End Class

İÇ İÇE DÖNGÜLER (NESTED LOOPS)


İç içe döngüde bir döngünün içinde başka döngüler bulunur.

Ör:
Public Class Form1
Dim i, j, t As Byte
Private Sub Button1_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]
t = 0
For i = 1 To 4
MsgBox("dış döngüye girildi " & i)
For j = 1 To 2
t = t + 1
MsgBox("iç döngüye girildi dış döngü= " & i &
" iç döngü= " & j)
Next j
Next i
MsgBox("döngülerden çıkıldı. iç döngü " & t & " kez
yapıldı")
End Sub
End Class

Örnek2: İki kişi arasında oynanabilecek basit bir sayı bulma oyunu hazırlayalım. Birinci
oyuncu programa sabit bir sayı olarak 1 ile 100 arasında bir değer girecek ve girilen bu değer
ikinci oyuncu tarafından görülmeyecektir. Oyunun esas öğrencisi ikinci oyuncudur. İkinci
oyuncu 1 ile 100 arasında bir sayı girerek birinci oyuncunun girdiği sayıyı tahmin etmeye
çalışacaktır. İkinci oyuncunun girdiği değerler birinci oyuncunun girdiği değerden büyük,
küçük veya eşit olabilir. Bu üç farklı duruma göre program çıktı kutusunda ‘girilen Büyüktür’,
‘Girilen Küçüktür’ ya da ‘Tebrikler Bildiniz’ Mesajı gösterilecektir. İkinci oyuncu en fazla 5
deneme yapabilecektir. İkinci oyuncu 5 denemede birinci oyuncunun girdiği değeri bilirse
oyunu kazanacak diğer durumda oyunu kaybedecektir. Çıktı kutusunda ‘üzgünüm oyunu
kaybettiniz’ mesajı gösterilecek ve oynama hakkı diğer oyuncuya geçecektir. Tüm bu
işlemleri düzenleyen bir program yazın.
KONTROL DEYİMLERİ

İF…THEN…ELSE…

Programın çalışmasını bir koşula bağlı olarak bir yerden programın başka bir yerine
yönlendirmek için kullanılır.
Bir kaç değişik kullanım şekli vardır.

Genel yazım şekli:

İf… koşul (veya koşullar)… then… ifade1

Koşul doğru (true) olduğunda ifade1 yapılır ve programın çalışması bir sonraki kod satırından
itibaren devam eder. Koşul yanlış ise ifade1 yapılmaz ve programın çalışması bir sonraki kod
satırından itibaren devam eder.

İf [Link]=”” then [Link]=”Metin kutusu boş geçilemez”


İf sayi < 0 then sonuc=” sıfırdan büyük bir sayı giriniz”
İf cevap=”D” then sonuc += 1

İf… koşul (veya koşullar)… then… ifade1 else ifade2

Koşul doğru (true) olduğunda ifade1 yanlış (False) olduğunda ifade2 yapılır ve programın
çalışması bir sonraki kod satırından itibaren devam eder.

İf sınav >=50 then sonuc = “geçtiniz” else sonuc = “kaldınız”


İf cevap = “D” then sonuc += 1 else sonuc -= 1
İf x*y>30 then [Link]= “doğru” else [Link]= ”yanlış”

Kural olarak if – then – else ifadelerinin end if ile bitirilmesi gerekir. Ancak yukarıdaki
örneklerde olduğu gibi, koşullu ifade içeren kod yalnızca bir satır (bir komut) ise end if
kullanılmayabilir. VS akıllı kod editörü, then yazdıktan sonra enter tuşuna basarak bir alt
satıra geçince otomatik olarak end if ifadesini ekler.

İf seçim=”E” then
msgbox “seçim değişkenine atanan değer E olduğunda”
msgbox “Buradaki deyimler yorumlanır”
Msgbox (x)
Else
msgbox “seçim < > E ise”
msgbox “buradaki deyimler yorumlanır”
End if

İf – then – else koşullu ifadesinin üçüncü kullanım şeklinde, iç içe birden fazla koşullu ifade
yer almaktadır. Bir şart sağlanmadığında başka bir şarta bakılmaktadır. Bu kullanım biçimi
aşağıda gösterilmiştir.

İf şart then
İfadeler1
Elseif şart2 then
İfadeler2
Elseif şart3 then
İfadeler3
Else
Else-ifadeleri
End if

Bu kullanım biçimini kullanırken dikkatli olmak zorundayız. İç içe geçmiş birden fazla şart ve
ifade olacağından bunların yeri önemlidir.

Ör:

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As [Link])


Handles [Link]
Dim sayi As Integer
Dim rakam_sayısı As String

sayi = Val([Link])

If sayi <= 9 Then


Rakam_sayısı = " Bir basamaklı "
ElseIf sayi <= 99 Then
Rakam_sayısı = " iki basamaklı "
ElseIf sayi <= 999 Then
Rakam_sayısı = " üç basamaklı "
Else
Rakam_sayısı = " kaç basamaklı
bilmiyorum "
End If
[Link] = rakam_sayısı
End Sub

Ör: aşağıdaki formda metin kutularına tam sayı girilecektir.


Button1’e tıklandığında bu sayılardan en büyüğünü textbox1’e, button2’ye tıklandığında bu
sayıların en küçüğünü textbox1’e button3’e tıklandığında ise bu sayıların aritmetik
ortalamasını textbox1’e yazan bir program geliştirin.
Public Class Form1
Dim s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, enb, enk As Integer
Dim ort As Single

Private Sub Form1_Load(ByVal sender As [Link], ByVal e As [Link])


Handles [Link]
[Link] = "sayı1"
[Link] = "sayı2"
[Link] = "sayı3"
[Link] = "sayı4"
[Link] = "sayı5"
[Link] = "sayı6"
[Link] = "sayı7"
[Link] = "sayı8"
[Link] = "sayı9"
[Link] = "sayı10"
[Link] = "En Büyüğü Bul"
[Link] = "En küçüğü Bul"
[Link] = "ortalamayı Bul"

End Sub

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
s1 = Val([Link])
s2 = Val([Link])
s3 = Val([Link])
s4 = Val([Link])
s5 = Val([Link])
s6 = Val([Link])
s7 = Val([Link])
s8 = Val([Link])
s9 = Val([Link])
s10 = Val([Link])
enb = s1
If s2 > enb Then enb = s2
If s3 > enb Then enb = s3
If s4 > enb Then enb = s4
If s5 > enb Then enb = s5
If s6 > enb Then enb = s6
If s7 > enb Then enb = s7
If s8 > enb Then enb = s8
If s9 > enb Then enb = s9
If s10 > enb Then enb = s10
[Link] = enb

End Sub

Private Sub Button2_Click(ByVal sender As Object, ByVal e As [Link])


Handles [Link]
s1 = Val([Link])
s2 = Val([Link])
s3 = Val([Link])
s4 = Val([Link])
s5 = Val([Link])
s6 = Val([Link])
s7 = Val([Link])
s8 = Val([Link])
s9 = Val([Link])
s10 = Val([Link])
enk = s1
If s2 < enk Then enk = s2
If s3 < enk Then enk = s3
If s4 < enk Then enk = s4
If s5 < enk Then enk = s5
If s6 < enk Then enk = s6
If s7 < enk Then enk = s7
If s8 < enk Then enk = s8
If s9 < enk Then enk = s9
If s10 < enk Then enk = s10
[Link] = enk
End Sub

Private Sub Button3_Click(ByVal sender As Object, ByVal e As [Link])


Handles [Link]
s1 = Val([Link])
s2 = Val([Link])
s3 = Val([Link])
s4 = Val([Link])
s5 = Val([Link])
s6 = Val([Link])
s7 = Val([Link])
s8 = Val([Link])
s9 = Val([Link])
s10 = Val([Link])
ort = (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10) / 10
[Link] = ort
End Sub
End Class

Örnek3: Üç Tam sayı form Üzerindeki metin kutularından girildiğinde bu sayıları küçükten
büyüğe doğru sıralayan ve sonucu form üzerindeki metin kutularında gösteren bir program
yazınız. En büyük sayı textbox1’de en küçük sayı textbox3’de olsun

SELECT CASE

Select case ifadesi de if – then – else ifadesi gibi bir koşullu ifadedir. Şartlar ikiden fazla
olduğunda select case ifadesinin kullanılması daha uygun olur. Bu şekilde kod daha rahat
okunabilir olur.
Genel yazılım şekli:

Select case durum


Case ifade
Yorumlanacak deyimler

Case ifade
Yorumlanacak deyimler

Case else ifade


Yorumlanacak deyimler

End select

Dizilimde görülen select case durum satırında bir durum belirlenir. Bu durum hangi case
ifadesi ile eşleşirse onun altındaki deyimler icra edilir ve select case ifadesinin dışına çıkılır.
Eğer belirlenen durumu hiçbir ifade satırı sağlamazsa dallanma case else ifade satırına olur.

Ör:

Public Class Form1


Dim x, y As Integer

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
X = InputBox("x")
Y = InputBox("y")
Select Case x * y
Case 12
[Link] = " x*y işleminin sonucu 12 dir"

Case 12 To 20
[Link] = "x*y işleminin sonucu 12-20 arasındadır"

Case Is > 20
[Link] = "x*y işleminin sonucu 20 den büyüktür"

Case Else
[Link] = "x*y işleminin sonucu hiç biri değil"
End Select
End Sub
End Class

Örnek:
A=4
B=9
Select case a+b
Case 13
[Link] = “toplamları 13 e eşit”

Case is>44
[Link] = “toplamları 44 den büyük”
End select

Örnek:
A=7
B=10
Select case a+b
Case 13
[Link] = “toplamları 13 e eşit”

Case 10 to 20
[Link] = “toplamları 10-20 arasındadır”

End select

Ör:
Select case sayi

Case 0
Msgbox (“girilen sayı sıfır”)
Case 1,2,3,50,32
Msgbox (“girilen sayı 1, 2 veya 3”)

Case 4 to 44
Msgbox (“girilen sayı 4-44 arasında”)

Case Is < 100


Msgbox (“girilen sayı 100’den küçük”)

Case else
Msgbox (“girilen sayı belli değil”)

End select

Ör: Girdi kutusundan “kırmızı”,”sarı”,”mavi” ve “siyah” stringleri girildiğinde hangi renk


girildiyse formun arka planını o renk yapacak bir program yazınız. Yukarıda sayılan
renklerden hiçbiri girilmezse çıktı kutusundan “mavi, sarı,siyah veya kırmızıyı girin” şeklinde
bir mesaj versin

Proje için form tasarımı

Ör: Bir kitapevinde çalışan satış temsilcisi sattığı kitap oranında ücret almaktadır. Satış
temsilcisi günlük 100 tl’ye kadarlık kitap satışı için satışın %10 u 100-200 tl arası satışlar için
satışın %20 sini 200 tl den yüksek satışlar için ise satışın %25 ini almaktadır. Buna göre girdi
kutusundan satış miktarı girilen temsilcinin alacağı ücreti hesaplayan ve çıktı kutusuyla
gösteren bir program yazın.

Ör: Girdi kutusundan bir veya iki basamaklı pozitif bir tamsayı girildiğinde bu sayıyı yazı
olarak çıktı kutusunda gösteren bir program yazınız.
Operatörler
1- Matematiksel işlem operatörleri

Operatör İşlem Örnek Sonuç


+ Toplama 7+2 9
- Çıkarma 7-2 5
* Çarpma 7*2 14
/ Bölme 7/2 3.5
\ Tamsayılı Bölme 7\2 3
Mod Kalanı Bulma 7mod2 1
^ Üs alma 7^2 49
() Parantez

Public Class Form1

Private Sub Form1_Load(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
[Link] = "ARİTMETİK OPERATÖRLER"
[Link] = "1. sayı"
[Link] = "2. sayı"
[Link] = "sonuç"
[Link] = ""
[Link] = ""
[Link] = ""
[Link] = "TOPLA"
[Link] = "ÇIKAR"
[Link] = "ÇARP"
[Link] = "BÖL"
[Link] = "TAMSAYIBÖL"
[Link] = "ÜS AL"
[Link] = "KALANI BUL"
[Link] = "ÇIK"

End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = Val([Link]) + Val([Link])

End Sub

Private Sub Button2_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = Val([Link]) - Val([Link])
End Sub

Private Sub Button3_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = Val([Link]) * Val([Link])
End Sub

Private Sub Button4_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = Val([Link]) / Val([Link])
End Sub

Private Sub Button5_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = Val([Link]) \ Val([Link])
End Sub

Private Sub Button6_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = Val([Link]) ^ Val([Link])
End Sub

Private Sub Button7_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = Val([Link]) Mod Val([Link])
End Sub

Private Sub Button8_Click(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
End
End Sub
End Class

Not: metin kutularındaki değerleri değişkenlere aktararak ta


işlem yapabilirsiniz.
d1+=d2 ifadesi d1=d1+d2 ifadesine eşdeğerdir.
d1-=d2 ifadesi d1=d1-d2 ifadesine eşdeğerdir.
d1*=d2 ifadesi d1=d1*d2 ifadesine eşdeğerdir.
d1/=d2 ifadesi d1=d1/d2 ifadesine eşdeğerdir.
d1\=d2 ifadesi d1=d1\d2 ifadesine eşdeğerdir.
d1 ^=d2 ifadesi d1=d1^d2 ifadesine eşdeğerdir.

2-Bağıntı (İlişki, karşılaştırma) Operatörleri

Operatör Açıklama Örnek Sonuç


= Eşittir 7=2 False
<> Eşit Değil 7<>2 True
< Küçüktür 7<2 False
> Büyüktür 7>2 True
<= Küçük veya Eşit 7<=2 False
>= Büyük veya Eşit 2>=2 True

Not: String değerler “Like” operatörüylede


karşılaştırılabilir.

Ör: a like b
“ali” like “veli”
x = UCase([Link])

If (x Like "TA??US") Then MsgBox("doğru") Else MsgBox("yanlış")


Mantıksal operatörler

Not
Değişken1 sonuç
False True
True False

And
Değişken1 Değişken2 sonuç
False False False
False True False
True False False
True True True

Or
Değişken1 Değişken2 sonuç
False False False
False True True
True False True
True True True

Xor
Değişken1 Değişken2 sonuç
False False False
False True True
True False True
True True False

Andalso
Değişken1 Değişken2 sonuç
False Kontrol edilmez False
True False False
True True True

Orelse
Değişken1 Değişken2 sonuç
False False False
False True True
True Kontrol edilmez True

STRİNG BİRLEŞTİRME OPERATORÜ


&,+ String Birleştirme “Ali”+”Veli” “AliVeli”

İşlem öncelikleri
Aritmetik işlemler
1- Parantez içi ( )
2- Üs alma ^
3- Negatifleme -
4- Çarpma, bölme *,/
5- Tamsayı bölmesi \
6- Kalanı bulma mod
7- Toplama çıkarma +,-

Mantıksal Operatörler
1- Not
2- And
3- Or
4- Xor
DEĞİŞKENLER VE SABİTLER

DEĞİŞKEN TANIMLAMALARI

Programınızda bir değişkeni kullanabilmek için önce bu değişkeni tanımlamanız gerekir.


Değişken tanımlamaktan kasıt değişkenin adını ve tipini belirlemek demektir. Tipi belli olan
değişkenin hafızada kaplayacağı alan da belirlenmiş olur.

VB’de değişken tanımlaması değişken tanımlama ifadeleriyle aşağıdaki gibi yapılır.

[Değişken tanımlama ifadesi] [değişkenismi] as [tipi] = [ilk değer]

Örneğin

Dim ad as string

Dim vize as integer (ilk değer ataması yapılmadan tanımlandı)

Dim vize as integer=90 (ilk değer ataması yapılarak tanımlandı)

Değişkenler adlandırılırken aşağıdaki kurallara dikkat etmek gerekir:

 Değişken isimlerinde VB anahtar kelimeleri kullanılamaz

 Nokta, noktalı virgül, soru işareti, tek tırnak, çift tırnak, parantez ve boşluk
kullanılmaz.

 Atama operatörleri (=), karşılaştırma operatörü (==) ve aritmetik operatörler (<, > v.b.)
kullanılamaz.

 İlk karakter olarak rakam kullanılamaz. Harfle başlamalıdır.

 Değişken ismi en fazla 255 karakter olmalıdır.

 Türkçe karakterler (İ, Ü, ı, ç, ğ, ö, ş) kullanılabilir ancak Türkçe olmayan işletim


sistemlerinde sorun yaratabilir.

 [Link] içerisinde değişken isimlerinde büyük küçük harf ayrımı yoktur. ad, AD, Ad,
aD aynı değişkeni temsil eder.

 Değişken isminden sonra as terimi kullanır ve sonra değişkenin tipi belirtilir. Tipi
belirtilmeyen değişkenlerin tipi [Link] tarafından aldıkları değerler göre otomatik
belirlenir.

Dim değişkenismi as tipi


1 değişken isminde rakam başta olmaz.

Dim isim1 , isim2

Doğru

Dim 1isim , 2isim[/code]

Yanlış

2 Değişken isminde boşlık bulunmaz. Bunun yerinde alt çizgi (_) karakteri kullanılabilir.

Dim ad_soyad ,Dogum_Yeri

Doğru

Dim ad soyad , Dogum Yeri

Yanlış

3 Değişken isminde sadece harfler, rakamlar ve alt çizgi bulunabilir.

Dim satis_tarihi , gorev_yeri , isim1

Doğru
Dim satis-tarihi , [Link]

Yanlış

4 Değişkene verilecek ismin V.B. komutlarından oluşmamalıdır.

Dim not

Yanlış
Dim and

Yanlış

DEĞİŞKEN TİPLERİ

Veri Boyutu Alabileceği Değer Aralığı


Tipi (Hafızada
Kapladığı
Alan)

Byte 1 Byte 0 – 255


Sbyte 1 Byte -128 +127

Short 2 Byte -32768 +32767

Ushort 2 Byte 0 through 65,535 (unsigned)

Integer 4 Byte -[Link] +[Link]

Uinteger 4 Byte 0 through 4,294,967,295 (unsigned)

Long 8 Byte -9,223,372,036,854,775,808 through 9,223,372,036,854,775,807


(9.2...E+18 †) (signed)

Ulong 8 Byte 0 through 18,446,744,073,709,551,615 (1.8...E+19 †) (unsigned)

Single 4 Byte -3.4028235E+38 through -1.401298E-45 (negatif sayılar için)

1.401298E-45 through 3.4028235E+38 (pozitif sayılar için)

Double 8 Byte -1.79769313486231570E+308 through -4.94065645841246544E-


324 † for negative values;

4.94065645841246544E-324 through 1.79769313486231570E+308


† for positive values

Decimal 16 Byte 0 through +/-79,228,162,514,264,337,593,543,950,335 (+/-


7.9...E+28) † with no decimal point; 0 through +/-
7.9228162514264337593543950335 with 28 places to the right of
the decimal;

smallest nonzero number is +/-0.0000000000000000000000000001


(+/-1E-28) †

String Platforma 0 ile yaklaşık 2 milyar Unicode karakter


bağlı

char 2 byte 0 through 65535 (unsigned) tek karakter

Date 8 Byte 01.01.001 – 31.12.9999 ile

00:00:00 – 23:59:59 arası

Boolean 2 byte True or False

object 4 bytes on 32- Object tipinde her tür değer saklanabilir


bit platform

8 bytes on 64-
bit platform

In scientific notation, "E" refers to a power of 10. So 3.56E+2 signifies 3.56 x 102 or 356, and
3.56E-2 signifies 3.56 / 102 or 0.0356.

Karakter veri tipleri

Sadece bir karakterden oluşan veriler için char veri tipi tercih edilir (ç,z,a,r,X,Y,0,9,#,+,/ v.b.)

Birden fazla karakterden oluşan metni saklamak için string veri tipi kullanılır.

Char ve string tipte tanımlanan bir değişkene veriler çift tırnak (“ “) içerisinde atanır.

Dim ad as string=”İsmail”

Dim t as char

T=”e”

Boolean veri tipi:

Doğru/yanlış, var/yok, evet/hayır, açık/kapalı gibi yalnızca iki ihtimalli durumlarda boolean
veri tipi kullanılır. Boolean tipindeki bir değişkenin değeri true veya false olur.

Date veri tipi:

Tarih ve saat bilgilerini tutmak için date veri tipi kullanılır. Date veri tipindeki bir değişkene
tarihler # # karakterleri arasına yazılır.

Dim tarih as date=#11/7/2013#

Dim saat as date=#11/8/2013 11:35:45 AM#

Tarih bilgisi araya bölü yerine tire işareti konularak ta yazılabilir

#11-7-2013#
ÖZEL KARAKTERLERLE DEĞİŞKEN TİPİNİ TANIMLAMA

İnteger Tipi

Dim sayı1 as integer

Dim sayı2 as integer

Veya

Dim sayı1,sayı2 as integer

Veya

Değişken adının sonuna % işareti konur

Dim sayı1%

Dim sayı2%

Dim sayi as integer

Sayi=18562

Long İnteger:

Dim toplam as long

Veya

Değişkenin sonuna & karakteri eklenir

Dim toplam&

Single Precision (Tek hassasiyetli gerçel sayı) Tipi:

Dim ortalama as single

Veya değişken adının sonuna ! karakteri eklenir

Dim ortalama!
Double Precision (Çift Hassasiyetli Gerçel Sayı) Tipi:

Dim miktar as double

Veya değişken adının sonuna # karakteri eklenir.

Dim miktar#

String Tipi:

Dim ad as string

Veya değişken adının sonuna $ karakteri eklenir.

Dim ad$

Decimal Tipi:

Dim tutar as Decimal

Veya değişken adının sonuna @ karakteri eklenir.

Dim tutar@

TANIMLANDIKLARI YERLERE GÖRE DEĞİŞKENLER (KAPSAM)

1. Bir prosedürün içinde tanımlanan değişkenler sadece o prosedürde kullanılabilir. Bu


tür değişkenlere local değişken adı verilir. Tanımlama aşağıdaki gibi yapılır.

[Dim] [Değişkenadı] as [Değişken tipi]

2. Bir değişkenin aynı formun tümünde (tüm prosedürlerde) kullanmak istenildiğinde


(diğer formlarda geçerli olmayacak) aşağıda belirtildiği gibi tanımlanmalıdır.

Public class formadı

Satırının altında Form Declarations (Form Deklarasyon) kısmında Dim deyimiyle


tanımlanmalıdır.

3. Bir değişkenin projenin tamamında geçerli olması için iki yöntem uygulanabilir:

a. Projeye eklenen bir modülde public deyimiyle tanımlanabilir.


b. Form Declarations (Genel Deklarasyon) kısmında public deyimiyle
tanımlanabilir.

DEĞİŞKENLERİ TANIMLAMADAN KULLANMAK

Değişkenleri tanımlamadan kullanmak mümkündür. Bunun için option explicit seçeneğinin


kapalı (off) yapılması gerekir. Option explicit seçeneği varsayılan olarak açıktır (on). On
olması çıkabilecek sorunları baştan önleyeceği için tercih edilen yöntemdir.

Option explicit seçeneği iki yolla değiştirilebilir:

1 varsayılan değeri değiştirmek

Tools /Options / Project and Solution / VB Defaults

2. geçerli proje için değişiklik yapmak

Project / proje adı properties / compile


Yukarıda verilen iki yöntem arasında fark verdır. Birinci yöntem ile yapılan değişiklik
yapılacak tüm projeleri etkiler ikinci yöntemle yapılan ise sadece geçerli projeyi etkiler. Daha
sonra yapılacak başka projeleri etkilemez.

VERİ TİPLERİNİ DÖNÜŞTÜRMEK:

İnteger tipindeki bir değişkeni bir etikete aktaralım. Bu durumda program hata vermeden
çalışır. Fakat label’ın text özelliği string türdedir. İnteger tipindeki bir değişkeni göstermemesi
gerekirken gösterdi. Bu tip dönüşümü sayesinde oldu. VB bizim yerimize kendi dönüştürmeyi
yaptı. Bu tip dönüştürme kapalı dönüştürme (implicit conversion) adı verilmektedir. VB’nin
bizim yerimize dönüştürme yapıp yapmayacağı bizim tercihimize bırakılmıştır. Option strict
seçeneği ile bu tercihi yapabiliriz. VB’nin bizim yerimize dönüştürme yapmasını istemiyorsak
option strict seçeneğinin değeri on yapılır.

Option explicit seçeneğinde olduğu gibi option strict seçeneği de iki yolla değiştirilebilir:

1 varsayılan değeri değiştirmek

Tools /Options / Project and Solution / VB Defaults


2. geçerli proje için değişiklik yapmak

Project / proje adı properties / compile


Yukarıda verilen iki yöntem arasında fark verdır. Birinci yöntem ile yapılan değişiklik
yapılacak tüm projeleri etkiler ikinci yöntemle yapılan ise sadece geçerli projeyi etkiler. Daha
sonra yapılacak başka projeleri etkilemez.

DÖNÜŞTÜRME FONKSİYONLARI

Değişkenlere atanan verilerde veri tipi uyuşmazlığı olduğunda açık dönüştürme yapıldığında
dönüştürme fonksiyonları kullanılır. Dönüştürme fonksiyonları aşağıdadır.

FONKSİYON DÖNDÜRÜLEN VERİ AÇIKLAMA


ADI TİPİ

CBool Boolean Data Type Parametre olarak verilen değeri boolean tipine
dönüştürür. Parametre olarak verilen değer
sıfırdan farklıysa true, sıfır ise false değerini
döndürür

CByte Byte Data Type Parametre olarak verilen 0 ile 255 (unsigned)
arsındaki değeri byte tipine dönüştürür; kesirli
kısım tama yuvarlanır

CChar Char Data Type Parametre olarak verilen değerin ilk


karakterini döndürür.

CDate Date Data Type Parametre olarak verilen geçerli bir tarih veya
saati date tipine dönüştürür.

CDbl Double Data Type Parametre olarak verilen değeri double tipine
dönüştürür

CDec Decimal Data Type Parametre olarak verilen değeri decimal tipine
dönüştürür

CInt Integer Data Type Parametre olarak verilen değeri integer tipine
dönüştürür; kesirli kısım tama yuvarlanır.

CLng Long Data Type Parametre olarak verilen değeri long tipine
dönüştürür; kesirli kısım tama yuvarlanır.

CObj Object Data Type Parametre olarak verilen değeri object tipine
dönüştürür

CSByte SByte Data Type Parametre olarak verilen değeri sbyte tipine
dönüştürür; kesirli kısım tama yuvarlanır.

CShort Short Data Type Parametre olarak verilen değeri short tipine
dönüştürür; kesirli kısım tama yuvarlanır.

CSng Single Data Type Parametre olarak verilen değeri single tipine
dönüştürür

CStr String Data Type Parametre olarak verilen Returns for CStr
depend on the expression argument.

CUInt UInteger Data Type Parametre olarak verilen değeri uinteger tipine
dönüştürür; kesirli kısım tama yuvarlanır.

CULng ULong Data Type Parametre olarak verilen değeri ulong tipine
dönüştürür; kesirli kısım tama yuvarlanır.

CUShort UShort Data Type Parametre olarak verilen değeri ushort tipine
dönüştürür; kesirli kısım tama yuvarlanır.

SABİTLER

İçeriği sabit olan değer ve ifadelerin saklanması amacıyla kullanılırlar. Bir sabitin değeri
uygulamanın çalıştırılması sırasında kesinlikle değiştirilemez. Const deyimi ile tanımlanırlar.

[Const] [sabit adı] as [tipi]=değeri


Örneğin:

Const pi as single=3.142857143

Dim alan,cevre,yarıcap as single

Yarıcap=inputbox(“yarı çapı girin”)

Cevre=2*pi*yarıcap

Alan=pi*r^2

Private Sub hesapla_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]

Const pi As Single = 3.142857143

Dim alan, cevre, yarıcap As Single

yarıcap = InputBox("yarı çapı girin")

cevre = 2 * pi * yarıcap

alan = pi * yarıcap ^ 2

[Link] = cevre

[Link] = alan
End Sub

AÇIKLAMA EKLEMEK

Kod içerisine açıklama eklemek için (‘) karakteri kullanılır.

Ör:

‘ ilk değer 112 olan bir değişken tanımlanıyor

Dim d as integer=112
FORMLAR (FORMS)

FORM OLAYLARI (FORM EVENTS)

Move: form başlık çubuğundan tutulup sürüklendiğinde meydana gelir.

Resize: formun boyutları değiştirildiğinde meydana gelir.

resizebegin: formun boyutları değiştirilmek üzere kenarlıklar üzerinde fare imleci tıklandığı
anda meydana gelir.

Resizeend: formun boyutları değiştirilmek üzere kenarlıklar üzerinde fare imleci tıklanıp
bırakıldığı anda meydana gelir.

Shown: form ilk gösterildiği anda meydana gelir.

Fare olaylarının meydana geliş sırası aşağıdaki gibidir:

Mouseenter
Mousemove
Mousehover / mousedown / mousewheel / mouseclick
Mouseup
mouseleave

FORM METOTLARI

Metotlar, bir denetimin (kontrol), nesne veya sınıfın hazır yordamlarıdır. Yani ait oldukları
denetimler için belli işlevleri gerçekleştirirler. Formun metotları da formun özellikleri ve
olaylarının yönetilmesi için gerekli işlemlerin gerçekleştirilmesini sağlarlar. Örneğin formun
kapatılması gerektiğinde formun kapatma eylemini gerçekleştirecek metodu (close metodu)
çağrılır.

Bir formun en sık kullanılan metodları aşağıda gösterilmiştir.

Activate: formu aktif hale getirerek seçili olmasını sağlar.

Örnek

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles [Link]


[Link]()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles [Link]


[Link]()
End Sub

Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles [Link]


[Link] = "form1 activated"

Sayfa 1 / 3
FORMLAR (FORMS)
End Sub
End Class

Public Class Form2


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles [Link]
[Link]()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles [Link]


[Link]()
End Sub

Private Sub Form2_Activated(sender As Object, e As EventArgs) Handles [Link]


[Link] = "form2 activated"
End Sub
End Class

Public Class Form3


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles [Link]
[Link]()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles [Link]


[Link]()
End Sub

Private Sub Form3_Activated(sender As Object, e As EventArgs) Handles [Link]


[Link] = "form3 activated"
End Sub
End Class

Bringtofront: formu en öne getirir.

Centertoscreen: formun ekranda ortalanmasını sağlar.


Ör:
Private Sub Button1_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link]()

End Sub
Close: formu kapatır.

Ör:
Private Sub Button7_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link]()

End Sub

Private Sub Button8_Click(ByVal sender As Object, ByVal e


As [Link]) Handles [Link]
[Link]()

Sayfa 2 / 3
FORMLAR (FORMS)

End Sub

Private Sub Button9_Click(ByVal sender As Object, ByVal e


As [Link]) Handles [Link]
[Link]()
End Sub

Dispose: form tarafından kullanılan kaynakları serbest bırakır.

Sendtoback: formu açık pencerelerin en arkasına gönderir.

Show metodu: formu kullanıcıya gösterir.

Showdialog: formun diyalog kutusu şeklinde gösterilmesini sağlar. Bu şekilde gösterilen bir
formu kapatmadan diğer formlara geçiş yapılamaz.

Hide: Hide metoduda sık kullanılan metotlardandır. Hide metodu Show metodunun tersine
formun görüntüsünü ekrandan kaldırır. Diğer bir deyişle formu saklar. Hide metoduyla
saklanan form arka planda çalışmasına devam eder.

Sayfa 3 / 3
FORMLAR (FORMS)

FORM OLAYLARI (FORM EVENTS)


DEVAMI

Keydown: formun keypriew özelliği aktif iken klavyeden bir tuşa basılması olayıdır. Yön
tuşları ve kontrol tuşlarına basıldığında da tetiklenir. [Link] metodu ile basılan tuşun kodu
kontrol edilmektedir. Burada istenirse tuşun karakter kodu yazılır ya da aşağıda görüldüğü
gibi [Link]şadı şeklinde tuşun adı belirtilebilir. Eğer kontrol tuşları kullanımı kontol
edilecekse [Link], [Link], [Link] şeklinde kullanılabilir.
Ör1:
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As
[Link]) Handles [Link]

MsgBox([Link])
End Sub

Ör2:

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
If ([Link]) = [Link] Then MsgBox("caps lock
tuşuna bastınız")
If ([Link]) = [Link] Then MsgBox("ctrl
tuşuna bastınız")
If ([Link]) = Keys.F10 Then MsgBox("f10 tuşuna
bastınız")
If ([Link]) = [Link] Then MsgBox("sol tuşuna
bastınız") End Sub

Örnek

Public Class Form1

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
If [Link] = 0 Then
End
Else
[Link] -= 0.1
[Link] = [Link]

End If
End Sub

Private Sub Form1_FormClosing1(ByVal sender As Object, ByVal e


As [Link]) Handles [Link]
[Link] = True

Sayfa 1 / 4
FORMLAR (FORMS)

[Link]()

End Sub

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
If [Link] And [Link] And [Link] = Keys.F3 Then
End
End If
End Sub

Private Sub Form1_Load_1(ByVal sender As [Link], ByVal e


As [Link]) Handles [Link]
[Link] = "HOŞ GELDİNİZ..." & TimeOfDay
End Sub
End Class

Keypress: formun keypriew özelliği aktif iken klavyeden bir tuşa basılması olayıdır.
[Link] ile basılan tuşun karakter kodu kontrol edilmektedir. Ancak keypress olayında
ALT, ALTGR, CTRL gibi kontrol tuşlarının basıldığını algılayamayız.
Ör 1:
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
MsgBox([Link])
End Sub

Ör:2

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
Static i As Byte
i = i + 1
If [Link] = Chr(27) Then
MsgBox(i - 1 & " tuş tıklandı")

End If
End Sub

Keyup: formun keypriew özelliği aktif iken klavyeden basılan bir tuştan parmağımızı çekme
olayıdır.

Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = [Link]
End Sub

Mousemove: fare imleci form üzerinde hareket ettirildiğinde oluşur.


Sayfa 2 / 4
FORMLAR (FORMS)

Mousedown ve mouseup olayları: mousedown mouse’ın bir butonuna basıldığı anda


gerçekleşir. Bırakıldığında ise mouseup olayı gerçekleşir. Mousedown ile click olayı
arasındaki fark şudur: mousedown olayı Mouse butonuna basıldığı anda gerçekleşir. Click
olayının gerçekleşmesi için ise Mouse butonunun basıldıktan sonra bırakılması gerekir.
Hem mousedown hem de mouseclick olayları birlikte kullanılmışsa önce Mousedown sonra
Mouseclick olayları tetiklenir. Ancak mouseup olayıda kullanılmışsa mouseclick olayı devre
dışı kalır tetiklenmez.

Mouseenter: fare imleci form üzerine girdiği anda meydana gelir.

Mousehover: fare imleci form üzerinde belli bir süre hareketsiz bekletildiğinde meydana
gelir.

Mouseleave: fare imleci form üzerinden ayrıldığında meydana gelir.

Private Sub Form1_MouseLeave(ByVal sender As Object, ByVal e


As [Link]) Handles [Link]
MsgBox("mouseleave")
End Sub

Örnek:

Private Sub Form1_MouseLeave(sender As Object, e As EventArgs) Handles [Link]

[Link] = [Link]([Link])

End Sub

Mousewheel: fare tekeri çevrildiğinde meydana gelir. [Link] değişkeni teker yukarı
çevrildiğinde +120 aşağı çevrildiğinde -120 değerini alır.

Ör1:
Private Sub form1_MouseWheel(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]

[Link] = val([Link])+[Link]

End Sub
Ör2:
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As
[Link]) Handles [Link]

End Sub

Sayfa 3 / 4
FORMLAR (FORMS)

Private Sub form1_MouseWheel(ByVal sender As Object, ByVal


e As [Link]) Handles
[Link]

If [Link] > 0 Then


[Link] = [Link] +
[Link] * 10 / 100
[Link] = [Link] +
[Link] * 10 / 100

Else
[Link] = [Link] -
[Link] * 10 / 100
[Link] = [Link] -
[Link] * 10 / 100
End If

End Sub

Sayfa 4 / 4
FORMLAR (FORMS)

FORM OLAYLARI (FORM EVENTS)

Visual Basic ortamında nesnelere bağlı olaylar programlanır. Kullanıcının form üzerinde
yaptığı eylemlere göre belli olaylar meydana gelir ya da tetiklenir. Tetiklenen bu olayları
denetleyebilmek için olayların yönetilmesi gerekir. Örneğin kullanıcının formu aktif hale
getirmesi, boyutlarını değiştirmesi, form üzerinde iken farenin sol veya sağ düğmelerine
tıklaması, formu kapatması, fare ile form üzerinde dolaşması gibi durumlarda ilgili olaylar
tetiklenir. Formun olaylar karşısındaki davranışını programcı belirler.

Formun olayları da properties penceresinde gösterilmektedir. Form aktif iken properties


(özellikler) penceresinin araç kutusundaki events (olaylar) simgesi tıklandığında formun
olayları listelenir. Burada sol tarafta olayın adı, sağ tarafta ise bu olay tetiklendiği zaman
yönetildiğini gösteren olayın yönetim adı gösterilmektedir.

Formun olaylarından bazıları formun özellikleri ile ilişkilendirilmiştir. Örneğin,


backcolorchanged formun backcolor özelliği değiştirildiğinde tetiklenir. autosizechanged
olayı, formun autosize özelliği değiştirildiğinde tetiklenir. Bu şekilde bir özellikle
ilişkilendirilen olaylar genellikle changed son ekiyle adlandırılmıştır.

Formdaki olayları programlamak yani kod yazmak için kod editörünü açmak gerekir. Bu
editörü solution explorer penceresinden veya özellikleri penceresinde istenilen olay adına çift
tıklayarak açabilirsiniz. Kod editörünü F7 kısayol tuşu ile de açabilirsiniz. Bu editörü
açtığınızda karşınıza kod yazım sayfası gelecektir. Bu sayfanın üst tarafında açılabilir liste
kutuları bulunur (combobox). Sol taraftaki comboda form ve formda bulunan nesneleri
göreceksiniz. Sağ taraftaki comboda ise seçtiğiniz nesneye bağlı programlanabilecek olayların
listesi bulunur.
Kod editörünü bir kez açtıktan sonra sekmelere tıklayarak kod editörü ile tasarım ortamları
arasında geçiş yapabilirsiniz.

Sayfa 1 / 5
FORMLAR (FORMS)

FORM OLAYLARI

Load: Formun yüklenmesi olayı load olayı olarak tanımlanı[Link] ekranda görüntülenmeden
önce üzerinde yapmak istediğiniz düzenlemeleri form_load prosedürüne yazabilirsiniz.

Formclosing: form kapatılırken gerçekleşen olaydır.


[Link]=true değeri kapatmayı iptal eder.

Public Class Form1


Dim x As Integer
Private Sub Button2_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]
MsgBox("merhaba")
End Sub

Private Sub Form1_FormClosing(ByVal sender As Object,


ByVal e As [Link]) Handles
[Link]
x = Val([Link])

If x <> 5 Then [Link] = True

End Sub
End Class

Formclosed: form kapatıldığında gerçekleşen olaydır.


Public Class Form1
Dim x As Integer
Private Sub Button2_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]
MsgBox("merhaba")
End Sub

Private Sub Form1_FormClosed(ByVal sender As Object, ByVal


e As [Link]) Handles
[Link]
x = Val([Link])

MsgBox(x)
End Sub

Private Sub Form1_FormClosing(ByVal sender As Object,


ByVal e As [Link]) Handles
[Link]

End Sub
End Class
Sayfa 2 / 5
FORMLAR (FORMS)

Not: Bir .NET formunun FormClosed ve FormClosing olayı arasında seçim yaparken,
programcılar varsayılan olarak FormClosing olayını kullanmalıdır. FormClosed olayı
kullanılıyorsa ve olay işleyici, form içindeki kontrollere başvuran kodu içeriyorsa, büyük
olasılıkla hata çalışma zamanında oluşturulacaktır. Bunun nedeni, FormClosed olayı
yürütüldüğünde formun zaten atılmış olması ve kontrollerinin ya gitmiş olması ya da çöp
toplama sürecinde olmasıdır. FormClosing olayı, FormClosed olayından önce başlatılır,
böylece form içindeki denetimler hala var olur ve olay işleyicisinde başvurulabilir.

Activated: Activate olayı formun etkin hale gelmesi olayıdır. Run komutuyla uygulama
çalıştırıldığında form yüklendikten sonra activate olayı gerçekleşir. Uygulama içindede çeşitli
metotlarla (activate gibi) activate olayı gerçekleşebilir. Load olayı ise formun yüklenmesi
olayıdır. Load olayı ile activate olayları arasındaki en önemli fark load olayının (formun
yüklenmesi) activate olayından (formun yüklenmesi) daha önce olduğudur.

Deactivate Olayı: Activate olayının tersidir. Bir form etkin halini kaybederse deactivate olayı
gerçekleşmiş olur. Örneğin çalışma alanında iki form bulunsun. Birinci form üzerindeki bir
butondan ikinci form çağrıldığı zaman ikinci form activate birinci form ise deactivate olur.
Windows ile çalışırken defalarca activate ve deactivate olayları gerçekleşir.

Public Class Form1

Private Sub Button2_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link]()
End Sub

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link]()
End Sub
End Class

Private Sub Form2_Activated(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = [Link]
End Sub

Private Sub Form2_Deactivate(ByVal sender As Object, ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

Private Sub Form2_Load(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]

End Sub
End Class
Sayfa 3 / 5
FORMLAR (FORMS)

Private Sub Form3_Activated(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
[Link] = [Link]
End Sub

Private Sub Form3_Deactivate(ByVal sender As Object, ByVal


e As [Link]) Handles [Link]
[Link] = [Link]
End Sub

End Class

Click : Bir formun click olayı form üzerine tıklamadır.

Dblclick: form üzerine çift tıklamadır.

Autosizechanged: formun autosize özelliği değiştirildiğinde meydana gelir.

Ör:
Public Class Form1

Private Sub Button1_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = True

End Sub

Private Sub Button2_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = "Tarsus üniversitesi meslek
yüksekokulu"
End Sub

Private Sub Form1_AutoSizeChanged(ByVal sender As Object,


ByVal e As [Link]) Handles [Link]
MsgBox("değişti")
End Sub

Private Sub Button3_Click(ByVal sender As [Link],


ByVal e As [Link]) Handles [Link]
[Link] = False

End Sub
End Class
Backcolorchanged: formun arka plan rengi değiştirildiğinde meydana gelir.

Keydown: formun keypriew özelliği aktif iken klavyeden bir tuşa basılması olayıdır. Yön
tuşları ve kontrol tuşlarına basıldığında da tetiklenir. [Link] metodu ile basılan tuşun kodu
Sayfa 4 / 5
FORMLAR (FORMS)

kontrol edilmektedir. Burada istenirse tuşun karakter kodu yazılır ya da aşağıda görüldüğü
gibi [Link]şadı şeklinde tuşun adı belirtilebilir. Eğer kontrol tuşları kullanımı kontol
edilecekse [Link], [Link], [Link] şeklinde kullanılabilir.
Ör1:
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As
[Link]) Handles [Link]

MsgBox([Link])
End Sub

Ör2:

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As


[Link]) Handles [Link]
If ([Link]) = [Link] Then MsgBox("caps lock
tuşuna bastınız")
If ([Link]) = [Link] Then MsgBox("ctrl
tuşuna bastınız")
If ([Link]) = Keys.F10 Then MsgBox("f10 tuşuna
bastınız")
If ([Link]) = [Link] Then MsgBox("sol tuşuna
bastınız") End Sub

Sayfa 5 / 5
FORMLAR (FORMS)

FORMLAR (FORMS)

Formlar bir Visual Basic nesnesidir. Ve kullanıcı arabiriminin zeminini oluşturur. Diğer
nesneler formlar üzerine yerleştirilerek arabirim oluşturulur.

NESNELERİN FORM ÜZERİNE YERLEŞTİRİLMESİ

Nesneler form üzerine üç şekilde yerleştirilebilir.


1- Araç kutusundan istediğiniz nesne üzerine tıklayıp Mouse imlecini form üzerine
taşıdıktan sonra, mouse’ın sol tuşuna basarak nesneyi çizebilirsiniz.
2- Araç kutusunda form üzerine yerleştirmek istediğiniz nesne üzeride çift tıklayarak da
yerleştirme işini yapabilirsiniz.
3- Nesneyi form üzerine sürükleyip bırakabilirsiniz.

ÇÖZÜM GEZGİNİ (SOLUTİON EXPLORER)

Bu alan Visual Studio ortamında oluşturduğumuz projelerimiz ile ilgili olarak dosya yönetimi
yaptığımız, yeni item, yeni formlar ekleyebildiğimiz alandır. Yani üzerinde çalışmış
olduğumuz projelerimizin bağlı olduğu tüm dosyalara buradan erişebiliriz.

ÖZELLİKLER PENCERESİ (PROPERTİES WİNDOW)

Her nesnenin kendisine özgü çeşitli özellikleri vardır. Nesnenin rengi, üzerindeki yazıların tipi
ve büyüklüğü, nesnenin biçimi, boyutu ve daha bir çok özellik özellikler penceresinden
düzenlenir. Nesnelerin özellikleri düzenlenmedikçe varsayılan değerler geçerli sayılır.
Çalışma alanında hangi nesne seçilirse, özellikler penceresinde de o nesneye ait özellikler
görüntülenir.

FORM KULLANIMI

Formlar kullanıcı ile iletişimi sağlayan arabirimin zeminini oluşturur. Basit, temel Visual
Basic uygulamalarında tek bir form bulunur. Büyük projelerde ise onlarca form ve modül
kullanılabilir.
Visual Basic çalışma alanına ulaştığınızda karşınızda önceden oluşturulmuş bir form
görüntülenecektir. Bu form kullanıcı arabirimini oluşturmak için bir zemin görevi görür.
Arabirim oluştururken kullanılacak diğer nesneler form üzerine yerleştirilir.
Her nesnenin olduğu gibi formların da isim, boyut, zemin rengi, yazıların rengi ve tipi gibi bir
çok özelliği vardır.
Küçült, büyült ve kapat düğmeleri Windows tabanlı tüm uygulamalardan bildiğimiz,
pencerenin şekillendirilmesinde kullanılan butonlardır.
Form başlığı yine tüm pencerelerde bulunan ve pencerenin ne amaçla kullanıldığını belirten
bir alandır. Bir form ilk oluşturulduğunda başlıkta forma verilen isim form1,form2,form3…
olarak belirir
Form başlığının sol tarafındaki küçük şekil form ikonudur. Bu ikon özellikler penceresinden
değiştirilebilir.

Sayfa 1 / 7
FORMLAR (FORMS)

BİR FORMUN ÖZELLİKLERİ

Tüm nesnelerin olduğu gibi formlarında çeşitli özellikleri vardır. Birçok nesnenin ortak
özellikleri olduğu gibi, her nesnenin kendine özgü çeşitli özellikleri olabilir. Nesnelerin
özellikleri özellikler (Properties) penceresinden düzenlenir. Özellikleri düzenlemenin diğer bir
yoluda kodlamadır. Form görünüm özellikleri, eklenecek kontrollerin (değiştirilmedikleri
sürece) görünümlerini de etkiler. Şimdi çok kullanılan form özelliklerini inceleyelim.

Name: Formun ismi belirlenir. Bu isim formu diğer form ve modüllerden çağırmak için
kullanılacaktır. Nesneler isimlendirilirken nesneye verilecek ismin başına nesne türünü
belirtecek üç harf yazmak kodlama işlemini kolaylaştırır. Örneğin frmiletişim gibi bir
adlandırmada frm harflerinden bunun bir form olduğu kolayca anlaşılacaktır.

Text: Formun başlığının değiştirildiği kısımdır. Formun ekranda görüntülenen ismidir.

Autoscroll: kontroller formun üzerine sığmadığı zaman kaydırma çubuğunun görünürlüğünü


kontrol eder. True – false seçeneklerinden birisi ile bu özelliği açarız veya kaparız.

Autosize: kontrolün text özelliğine uzunca bir şey yazdığımızı farz edelim ve bu
yazdıklarımız formun boyutundan büyük olsun. Eğer autosize özelliği true ise form o yazının
uzunluğu kadar otomatik olarak genişler.

Autosizemode: Autosize özelliğinin ne şekilde çalışacağının seçilmesini sağlar. Growonly


seçeneği formun yalnızca büyütüleceğini belirtir. Growandshrink seçeneği ise formun hem
büyütülebileceğini hem de küçültülebileceğini belirtir

Backcolor: Formun arka plan (zemin) rengini düzenlemek için kullanılır.


[Link] = [Link]

Sayfa 2 / 7
FORMLAR (FORMS)

Background image: formun arka planına resim eklememizi sağlar. Özelliğin üstüne bir kere
tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona tıkladığımızda aşağıdaki
pencere açılır.

Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] =[Link]("d:\[Link]")
End Sub

Arka plan resmini kaldırmak için aşağıdaki kod kullanılır.

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = Nothing
End Sub

Background image layout: Backgroundimage ile eklenilen resmin nasıl yerleştirileceğini


düzenlemek için kullanılır. 5 farklı değer alır: none, center, stretch, tile, zoom
None: resmin hangi kısmı forma geliyorsa o kısmı forma eklenir. Yani resmin boyutu kadar
eklenir.
Tile: resim yan yana ve üst üste eklenir. Formun boyutu artırıldığında bu durum görülür.
Center: Resmin ortalanmasını sağlar.
Stretch: Resmin boyutu ne olursa olsun resmi forma sığdırır.

Sayfa 3 / 7
FORMLAR (FORMS)

Zoom: resmi yaklaştırır.

[Link] = [Link]
Cancel Button

Kullanıcı ESC tuşuna bastığında tıklanan düğme kontrolünü alır veya ayarlar.

Örnek: formda button7 cancelbutton olarak ayarlansın. Bu durumda ESC tuşuna basıldığında
click olayındaki kodlar icra edilir.

Private Sub Button7_Click(sender As Object, e As EventArgs) Handles [Link]


MsgBox("esc button")
End Sub
Controlbox: formun sağ üst tarafındaki ekranı kaplama, simge durumuna küçültme, kapatma
gibi düğmelerin gösterilip gösterilmeyeceğini belirler. True veya false değerlerini alabilir.
[Link] = True

Cursor: Farenin formunuz üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.

[Link] = [Link]

Enabled: Bu özellik formun kullanılıp kullanılmayacağını belirler. Değeri True olduğunda


form kullanılabilir. False olduğunda ise form ve üzerindeki nesneler kullanılamaz.
Bu özelliğin kullanılması şu şekilde olur.
[Link]=false

Sayfa 4 / 7
FORMLAR (FORMS)

Bu kodlamaya göre formun Enabled özelliği true olmadığı sürece form ekranda
görüntülenecek ancak kullanılamayacaktır.

Font: Form üzerindeki yazıların biçimini düzenlemek için kullanılır. Yazının tipi, boyutu ve
biçimi bu özellik ile düzenlenir.

Kod:

Private Sub Button2_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = New Font("arial", 16,[Link])
End Sub

Forecolor: Bu özellik form üzerindeki nesnelerin yazı rengini belirlemek için kullanılır.

[Link] = [Link]

Maximizebox: formun ekranı kapla düğmesinin olup olmayacağını belirler.

Minimizebox: formun simge durumuna küçült düğmesinin olup olmayacağını belirler.

formborderstyle: Formun kenarlıklarıyla ilgili düzenlemeler yapar. 7 değişik durum vardır.

None: Formun kenarları yoktur. Başlık çubuğu ortadan kalkar. Formun boyutu kullanıcı
tarafından değiştirilemez.

Fixed Single: Bu seçenek kullanıcı formun boyutlarını değiştiremez.

Fixed 3D: forma üç boyutlu görünüm vererek aynı zamanda boyutlarının değiştirilmesini
engeller.

Fixed Dialog: denetim düğmesi (formun simgesi) görünmez. kullanıcı formun boyutunu
değiştiremez.

Fixed Tool Window: formun boyutları değiştirilemez, denetim düğmesi (formun simgesi)
görünmez, ekranı kaplama ve simge durumuna küçültme butonları görünmez. Yalnızca
kapatma butonu aktiftir.

Sizeable: varsayılan görüntü ayarıdır. Bu seçenekle formunuzun boyutu kullanıcı tarafından


değiştirilebilir duruma gelir. denetim düğmesi (formun simgesi), ekranı kaplama, simge
durumuna küçültme düğmeleri aktif olur.

Sizeable Tool Window: Fixed Tool Window seçeneğiyle aynıdır. Fakat kullanıcı formun
boyutunu fare ile değiştirebilir.

Kodlama aşağıdaki gibidir:

FormBorderStyle = [Link]

Sayfa 5 / 7
FORMLAR (FORMS)

FormBorderStyle = [Link].Fixed3D

FormBorderStyle = [Link]

FormBorderStyle = [Link]

FormBorderStyle = [Link]

FormBorderStyle = [Link]
FormBorderStyle = [Link]

İcon: Formunuzun simgesini seçip değiştirebileceğiniz kısımdır (simge formun sol üst
tarafındadır). Bu özelliğin değeri değiştirilmek istendiğinde ICO uzantılı bir dosya yeri
belirlemek için göz at penceresi çıkar. Bu pencereden istenen simge dosyası forma yüklenir.

Private Sub Button1_Click(ByVal sender As [Link], ByVal


e As [Link]) Handles [Link]
[Link] = New Icon("d:\[Link]")
End Sub

Keyprewiev: Form üzerinde iken herhangi bir tuşa basıldığında formun keypress veya
keydown olaylarının tetiklenmesini sağlar.

Locked: tasarım anında nesnenin taşınması ve yeniden boyutlandırılmasının yapılıp


yapılmayacağını belirler.

Location: program çalıştırıldığı zaman formun sol üst köşesinin bulunduğu konumu gösterir.
Location özelliğini kullanabilmek için startposition özelliğinin manual değerde olması
gerekir.

Maximumsize: formun maksimum ne kadar büyütülebileceğini belirtir.

Minimumsize: formun minimum ne kadar küçültülebileceğini belirtir.

Opacity: formun saydamlığının değiştirilmesini sağlar.

[Link] = 0.5

Size: formun yükseklik ve genişlik değerlerini ayarlar.

Showicon: Formunuzun simgesinin gösterilip gösterilmeyeceğinin belirlendiği özelliktir.

Startposition: Bu özellik, çalışma zamanında görüntülenirken formun başlangıç konumunu


ayarlamanıza olanak sağlar (program çalıştırıldığı zaman formun ekranın neresinde
görünmesini istediğimizi belirlediğimiz özelliktir.).
Formun konumu, Location özelliği ayarlanarak veya Windows tarafından belirtilen varsayılan
konumu kullanacak şekilde manuel belirtilebilir. Ayrıca, birden çok belgeli arabirim (MDI)

Sayfa 6 / 7
FORMLAR (FORMS)

alt formu gibi formlar için ekranın ortasında veya üst formun merkezinde görüntülenmesini
sağlayabilirsiniz.

Bu özellik form gösterilmeden önce ayarlanmalıdır.

Aşağıdaki değerleri alabilir:

 Manual: Formun konumu ve boyutu, başlangıç konumunu belirleyecektir.


 Centerscreen: Form, geçerli ekranda ortalanır ve formun boyutunda belirtilen
boyutlara sahiptir.
 Windowsdefaultlocation: Form, Windows varsayılan konumuna konumlandırılır ve
formun boyutunda belirtilen boyutlara sahiptir.
 Windowsdefaultbounds: Form Windows tarafından belirlenen konum ve büyüklüğe
sahip olur.
 Centerparent: Form, üst formunun sınırları içinde ortalanır.

Show İn Taskbar: Programınız çalıştığında görev çubuğunda gösterilip gösterilmeyeceğinin


ayarlandığı özelliktir. Bu özelliğe verilen değer True ise programınız görev çubuğunda
gözükür aksi halde gözükmez.

Windowsstate: Projeniz çalıştırıldığında formunuzun alacağı pozisyonu belirler üç farklı


değer alabilir.

Normal: Projeniz çalıştırıldığında formunuz normal olarak başlar.


Miniminezed: Projeniz çalıştırıldığında formunuz simge durumuna küçülmüş şekilde
görüntülenir.

Maximized: Projeniz çalıştırıldığında formunuz ekranı kaplamış şekilde görüntülenir. (ancak


maximum size kadar olacaktır.)

Topmost: programı çalıştırdığımızda form her zaman en üstte olmasının sağlanabileceği


özellik. (Başka programlar çalıştırsanızda topmost özelliği true değerine sahipse formunuz en
üstte olacaktır.

Örnek: Aşağıdaki özellikleri barındıran bir form hazırlayın.


a. Önce özellikler (properties) penceresini kullanarak bu özellikleri oluşturun.
b. Daha sonra her bir özellik için ayrı bir butonun “click” prosedürüne kod yazarak
özellikleri değiştirin.

1 Başlığı “İlk Program” olsun


2 Arka planın rengi (zemin rengi) sarı olsun
3 Formun Boyutu kullanıcı tarafından fare ile değiştirilemesin
4 Fontu tahoma ve büyüklüğü 18 punto, kalın (koyu) olsun
5 yüksekliği 500 ve genişliği 300 olsun
6 Ekranı kapla düğmesi kullanılmasın
7 Fare işaretçisinin simgesi formunuz üzerinde dolaşırken Ibeam olsun
8 Görev çubuğunda gözüksün
9 Programınız çalıştığında formunuz simge durumuna küçülmüş olarak başlasın.
10 arka plana bir resim aktarın.

Sayfa 7 / 7

You might also like