Abicim if yapısını çok yanlış anlamışsın sen, problem ordan kaynaklanıyor. Şöyle bir if yazımı olamaz (olur da asla çalışmaz):
if (textBox3.Text == "Artvin")
{
if (textBox3.Text == "Balıkesir")
{
if (textBox3.Text == "Bilecik")
{
if (textBox3.Text == "Bingöl")
{
if (textBox3.Text == "Bitlis")
{
if (textBox3.Text == "Çanakkale")
{
if (textBox3.Text == "Denizli")
{
if (textBox3.Text == "Edirne")
{
if (textBox3.Text == "Eskişehir")
{
if (textBox3.Text == "Gümüşhane")
{
if (textBox3.Text == "Hakkari")
{
if (textBox3.Text == "Mersin")
Senin bu yazdığın şu anlama geliyor: textBox3'ün içeriği Artvin mi evet, textbox3'ün içeriği Balıkesir mi, textbox3'ün içeriği Bilecik mi.... diye gidiyor. Şimdi yorumlayalım, kutunun içinde Artvin yazsın, ilk if ifadesi doğru olacak, yeni textbox3.text=="Artvin" doğru, sonraki satır ne yapıyor? textbox3.text=="Balıkesir"? E Artvin dedik, balıkesir olmaz ki, dolayısıyla if yanlış olur, içine girmez ve balıkesir koşulunu yazdığın if'in parantezi nerde kapanıyorsa program ordan devam eder. Şimdi diğer senaryoyu düşünelim, diyelim ki kutuda balıkesir yazıyor, ilk if'e baktın, Artvin mi? değil, o zaman if'e girmedin, artvin koşulunu yazdığın if'in parantezi nerde kapandıysa program ordan devam edecek, balıkesir mi diye bakmayacak bile...
Şu şekilde yazarsan olur (textbox yerine kutu yazıyorum):
if (kutu=="Adana" || kutu=="Bursa" || kutu=="Denizli")
{
//atıyorum 'te olması gerekenler
}
else if (kutu=="Rize" || kutu="Urfa")
{
//atıyorum 'de olması gerekenler
}
if ifadesinde aradaki || işareti veya demek, adana ise veya bursa ise veya denizli ise anlamına geliyor yani (ve için && kullanabilirsin). Şimdi buna göre bi daha dene bakalım...
İlk satırda karakter dizisi tanımlıyorum, char[] karakter dizisi demek ve dizinin elemanları da a,ı,u,o.
ikinci ve üçüncü satırda, kolaylık olsun diye değişken tanımlıyorum, ilki girilen şehrin ismi, ikincisi de şehrin kaç karakter olduğu.
üçüncü satırdaki if koşulu şu anlama geliyor:
sehir[0] yazdığımızda, şehrin ilk harfini elde ederiz (ör: Bursa için B harfi), eğer biz son harfe bakacaksak uzunluk-1 dememiz lazım çünkü saymaya sıfırdan başlıyoruz.
Bursa örneğinden devam edersek, uzunluk=5, sehir[4]=a olur.
Daha sonra kalinUnluler.Contains(xxxx) demek, xxxx değeri bu kalinUnluler dizisinin içinde var mı demek. Örnekten gidecek olursak, (a,ı,u,o) dizisi içerisinde a harfi var mı (Bursa'nın son harfi)? Koşul doğru olacak, evet var. O zaman if parantezi içindeki kısım çalıştırılacak. Mesela, Rize girilseydi, e var mı, yok, o zaman else kısmı çalıştırılacaktı.
String.Format ise aslında sehir+"'de" yazmakla aynı işi görüyor; ancak Ömer'in yaptığı gibi eğer uzun uzun xxx+yyy+zzz+ttt şeklinde + ile cümle kurarsak performans problemi oluşur. Bu proje elbette çok küçük olduğu için bir önemi yok ama nasıl alışırsanız öyle gidiyor. String birleştirirken zorda kalmadıkça, ya da sadece xx+yy yazacaksanız + kullanın derim. String.Format'ın detaylı kullanımı için Google'a bakabilirsiniz :)
Benzer şekilde, eğer boş string ataması yapacaksanız asla bosString=""; şeklinde atama yapmayın, onun yerine bosString=String.Empty; kullanın. Daha yolun çok başındayız, öğrenmeye devam :)