Çözüldü C# listview

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

Saldon

Kilopat
Katılım
22 Aralık 2018
Mesajlar
146
Çözümler
3
Yer
Hatay
Daha fazla  
Sistem Özellikleri
Ekran çözünürlüğü: 2560x1440 @ 164Hz
Pencere boyutu: 2560x1307 @ 164Hz
VR: Not Active
Graphics API: Direct3D 11.0 (Level 11.1)
GPU: NVIDIA GeForce RTX 4060
VRAM: 7957MB
Max Texture Size: 16384px
Shader Level: 50
CPU: AMD Ryzen 9 5900X 12-Core Processor (24 thread)
RAM: 32,869 MB (32 GB)
İşletim Sistemi: Windows 11 (10.0.26100) 64bit (Desktop)
Cinsiyet
Erkek
Meslek
Oyun Yapımcısı
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.
Filtreleme yapılacak ortak bir özellik göremiyorum, filtrelemekten ziyade ComboBox'ta seçtiğiniz sayıya göre resim adresini mi çekeceksiniz?
Çok özür diliyorum konu karıştırmışım.
Tam olarak yapmak istediğim sizin cevabınız.
 
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:
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı