Çözüldü C# listview

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Saldon

Hectopat
Katılım
22 Aralık 2018
Mesajlar
137
Çözümler
1
Arkadaşlar öncelikle merhaba.

2 Resim yolu var listview işe şöyle stünlardan oluşmakta
Bunları dolu olarak düşünün.
1.JPG

Sıra Numarası --- Resim Yolu
1 D\:ResimKlasörü\resim.png
2 D\:ResimKlasörü\resim2.png

Sıranumarası stünunu ComboBox1'e selectitem olarak çekiyorum.
Şimdi ise
Combox1'in selectitemi 1 ise 1. resmi 2 ise 2. resimi çekeceğim.
 
Son düzenleyen: Moderatör:
Çözüm
Diyelim ComboBox'ta 1, 2, 3... şeklinde itemlar var. Biz buradan bir sayıyı seçip, o sayının denk geldiği resim adresini bir string değişkene yazdıralım.

Bu durumda önce ComboBox'tan veriyi almalıyız.

C#:
int secim = comboBox1.SelectedIndex + 1;
1 eklememizin sebebi, index değerinin saymaya 0'dan başlaması. İlk item 0, ikincisi 1 diye gidiyor, biliyorsunuzdur. Ancak göstereceğimiz sayılar 1'den başladığından 1 ekliyoruz.

Bu yolu kullanabiliriz ancak bu durumu sayılar için yapabiliriz. Resim adresinden sorgulama yapacak olursanız metinsel olanı kullanabilirsiniz ancak bu yol olmaz.

C#:
string secim = comboBox1.Text;
Burada sayıyı çektik ancak metinsel olarak. Bu yöntemde metin ile arama yapabiliriz. Dikkat ettiyseniz değişkenimizi bu sefer string olarak atadık.


Şimdi gelelim ListView'dan veri çekmeye. Önce sayısal gidiyormuş gibi çözelim.

C#:
string dosyaYolu = listView1.Items[secim - 1].SubItems[1].Text;

Bu şekilde direkt sayıya erişim sağlayabiliriz. Bu yöntemde "secim" değişkeni sayısal bir değer olmalı, integer olarak atadığımız senaryo buna uygun. (Bu arada "secim" değişkenini atarken 1 ekledik, burada da 1 çıkarıp aynı yere geldik. Aslında bunları yapmaya gerek yoktu ama kolay anlaşılsın diye bu şekilde bir yol izledim, "secim" değişkeni gerçekten bir seçim almış gibi gözüksün diye.)

Şimdi de metinsel şekilde işlem yapalım.

C#:
foreach (ListViewItem item in listView1.Items)
            {
                if (item.Text == secim)
                    string dosyaYolu = listView1.Items[secim - 1].SubItems[1].Text;
            }

Burada da metinsel işlemler için bir arama yaptık. "secim" değişkeninin string olduğu senaryoya uygun. Bu arada dikkat ederseniz item.Text dedik, item.SubItems[0].Text demedik. Öyle de diyebiliriz ancak direkt Text dediğimizde zaten aynı değeri veriyor bize. O yüzden gerek yok.

ComboBox'a comboBox1, ListView'a da listView1 dedim. Onları kendi projenize göre değiştirirsiniz.

Kodları test etmedim, bir hata alırsanız söyleyin lütfen. Ek olarak anlamadığınız, takıldığınız bir yer olursa sorun.
Diyelim ComboBox'ta 1, 2, 3... şeklinde itemlar var. Biz buradan bir sayıyı seçip, o sayının denk geldiği resim adresini bir string değişkene yazdıralım.

Bu durumda önce ComboBox'tan veriyi almalıyız.

C#:
int secim = comboBox1.SelectedIndex + 1;
1 eklememizin sebebi, index değerinin saymaya 0'dan başlaması. İlk item 0, ikincisi 1 diye gidiyor, biliyorsunuzdur. Ancak göstereceğimiz sayılar 1'den başladığından 1 ekliyoruz.

Bu yolu kullanabiliriz ancak bu durumu sayılar için yapabiliriz. Resim adresinden sorgulama yapacak olursanız metinsel olanı kullanabilirsiniz ancak bu yol olmaz.

C#:
string secim = comboBox1.Text;
Burada sayıyı çektik ancak metinsel olarak. Bu yöntemde metin ile arama yapabiliriz. Dikkat ettiyseniz değişkenimizi bu sefer string olarak atadık.


Şimdi gelelim ListView'dan veri çekmeye. Önce sayısal gidiyormuş gibi çözelim.

C#:
string dosyaYolu = listView1.Items[secim - 1].SubItems[1].Text;

Bu şekilde direkt sayıya erişim sağlayabiliriz. Bu yöntemde "secim" değişkeni sayısal bir değer olmalı, integer olarak atadığımız senaryo buna uygun. (Bu arada "secim" değişkenini atarken 1 ekledik, burada da 1 çıkarıp aynı yere geldik. Aslında bunları yapmaya gerek yoktu ama kolay anlaşılsın diye bu şekilde bir yol izledim, "secim" değişkeni gerçekten bir seçim almış gibi gözüksün diye.)

Şimdi de metinsel şekilde işlem yapalım.

C#:
foreach (ListViewItem item in listView1.Items)
            {
                if (item.Text == secim)
                    string dosyaYolu = listView1.Items[secim - 1].SubItems[1].Text;
            }

Burada da metinsel işlemler için bir arama yaptık. "secim" değişkeninin string olduğu senaryoya uygun. Bu arada dikkat ederseniz item.Text dedik, item.SubItems[0].Text demedik. Öyle de diyebiliriz ancak direkt Text dediğimizde zaten aynı değeri veriyor bize. O yüzden gerek yok.

ComboBox'a comboBox1, ListView'a da listView1 dedim. Onları kendi projenize göre değiştirirsiniz.

Kodları test etmedim, bir hata alırsanız söyleyin lütfen. Ek olarak anlamadığınız, takıldığınız bir yer olursa sorun.
 
Çözüm
Diyelim ComboBox'ta 1, 2, 3... şeklinde itemlar var. Biz buradan bir sayıyı seçip, o sayının denk geldiği resim adresini bir string değişkene yazdıralım.

Bu durumda önce ComboBox'tan veriyi almalıyız.

C#:
int secim = comboBox1.SelectedIndex + 1;
1 eklememizin sebebi, index değerinin saymaya 0'dan başlaması. İlk item 0, ikincisi 1 diye gidiyor, biliyorsunuzdur. Ancak göstereceğimiz sayılar 1'den başladığından 1 ekliyoruz.

Bu yolu kullanabiliriz ancak bu durumu sayılar için yapabiliriz. Resim adresinden sorgulama yapacak olursanız metinsel olanı kullanabilirsiniz ancak bu yol olmaz.

C#:
string secim = comboBox1.Text;
Burada sayıyı çektik ancak metinsel olarak. Bu yöntemde metin ile arama yapabiliriz. Dikkat ettiyseniz değişkenimizi bu sefer string olarak atadık.


Şimdi gelelim ListView'dan veri çekmeye. Önce sayısal gidiyormuş gibi çözelim.

C#:
string dosyaYolu = listView1.Items[secim - 1].SubItems[1].Text;

Bu şekilde direkt sayıya erişim sağlayabiliriz. Bu yöntemde "secim" değişkeni sayısal bir değer olmalı, integer olarak atadığımız senaryo buna uygun. (Bu arada "secim" değişkenini atarken 1 ekledik, burada da 1 çıkarıp aynı yere geldik. Aslında bunları yapmaya gerek yoktu ama kolay anlaşılsın diye bu şekilde bir yol izledim, "secim" değişkeni gerçekten bir seçim almış gibi gözüksün diye.)

Şimdi de metinsel şekilde işlem yapalım.

C#:
foreach (ListViewItem item in listView1.Items)
            {
                if (item.Text == secim)
                    string dosyaYolu = listView1.Items[secim - 1].SubItems[1].Text;
            }

Burada da metinsel işlemler için bir arama yaptık. "secim" değişkeninin string olduğu senaryoya uygun. Bu arada dikkat ederseniz item.Text dedik, item.SubItems[0].Text demedik. Öyle de diyebiliriz ancak direkt Text dediğimizde zaten aynı değeri veriyor bize. O yüzden gerek yok.

ComboBox'a comboBox1, ListView'a da listView1 dedim. Onları kendi projenize göre değiştirirsiniz.

Kodları test etmedim, bir hata alırsanız söyleyin lütfen. Ek olarak anlamadığınız, takıldığınız bir yer olursa sorun.
Açıklamanız o kadar güzel ve detaylı ki çok teşekkür ederim, istediğim sonuca ulaştım.
 
Son düzenleyen: Moderatör:

Yeni konular

Geri
Yukarı