Skip to main content

AccessTr.neT M.


ListView1 Listeleme Hakkında

ListView1 Listeleme Hakkında

Çözüldü #1
Son Düzenleme: 20/05/2015, 15:25, Düzenleyen: drummers.

Kod:
 Private Sub DRm_Button2_Click(sender As System.Object, e As System.EventArgs) Handles DRm_Button2.Click

        Dim FilesInDir As String() = Directory.GetFiles(Application.StartupPath & "\REPERTUARX\", "*.txt", SearchOption.AllDirectories)
        Dim SFile As String
        ListView1.Items.Clear()
        For Each SFile In FilesInDir
            ListView1.Items.Add(New ListViewItem(New String() {SFile.Replace(Application.StartupPath & "\REPERTUARX\", ""), CStr(FileLen(SFile))}))

        Next

    End Sub


Application.StartupPath & "\REPERTUARX\" Klasörümün içinde birçok klasör var ve yukarıdaki gibi arama yapıp sonuçları listview de gösteriyorum

Sonuç şöyle oluyoru

TÜRKÜLER\Ah Le Yar.txt
TÜRKÜLER\XXXX.txt
TÜRKÜLER\Deneme.txt
TÜRKÜLER\Yar.txt
POP\Yyyyyy.txt
DİĞER\Cccccc.txt

Ben yukardaki kodu nasıl revize etmeliyim ki

Listvievde 1 kolon klasör ismi 2. kolon şarkı ismi olsun.

Örnek

Klasör Adı    Şarkı Adı

POP             Yyyy.txt

.rar WindowsApplication1.rar (Dosya Boyutu: 77,75 KB | İndirme Sayısı: 12)
drummers, 11-05-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#2
Sadece bir formdan ibaret olan örnek projeyi eklerseniz yardımcı olmak isterim.

AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
...........
#3
Son Düzenleme: 20/05/2015, 15:26, Düzenleyen: drummers.
(20/05/2015 14:48)alpeki99 Adlı Kullanıcıdan Alıntı: Sadece bir formdan ibaret olan örnek projeyi eklerseniz yardımcı olmak isterim.
Dosya eklenmiştir. İlaveten Listeleme işlemi bittikten sonra listedeki herhangi bir item tıklanırsa o itemin içeriğini richtextbox da okutmak istiyorum. Teşekkürler

drummers, 11-05-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#4
Normalde bir konuda birden fazla soru olduğu zaman cevap vermem ancak sizi az çok bilip suistimal etmeyeceğinizi düşünerek cevaplıyorum.

Öncelikle bir prosedür oluşturuyorum:

Visual Basic Code
Sub KlasorleriListele()

        Dim satir As Integer
       Dim sarkiBaslangic, klasorBaslangic, sarkiAdiUzunlugu As Integer
       Dim sarkiAdi, klasorAdi As String

       Dim FilesInDir As String() = Directory.GetFiles(Application.StartupPath & "\REPERTUARX\", "*.txt", SearchOption.AllDirectories)
       Dim SFile As String
       ListView1.Items.Clear()

       For Each SFile In FilesInDir
           sarkiBaslangic = SFile.LastIndexOf("\") + 2
           sarkiAdi = Mid(SFile, sarkiBaslangic)
           sarkiAdiUzunlugu = Len(SFile) - sarkiBaslangic + 2

           klasorBaslangic = SFile.IndexOf("X\") + 3
           klasorAdi = Mid(SFile, klasorBaslangic, (Len(SFile) - sarkiAdiUzunlugu + 1) - klasorBaslangic)

           ListView1.Items.Add(klasorAdi)
           ListView1.Items(satir).SubItems.Add(sarkiAdi)
           satir += 1
       Next
   End Sub


Listview'de sağ üst köşedeki üçgen kulakçık menüsünde Edit Columns tıklayın. Add butonuna tıklayıp yeni bir sütun ekleyin. Ben genişliklerini 100 ve 200 yaptım.

Yukarıdaki KlasorleriListele prosedürü tek başına çalışamaz. Bundan dolayı Formun Load yani Yüklendiğinde olayında ve butonun tıklanma olayında bu prosedürü çalıştırıyoruz:

Visual Basic Code
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        KlasorleriListele()
   End Sub


Visual Basic Code
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        KlasorleriListele()
    End Sub


Bu şekilde yapılacak olursa yukarıdaki kodlar ile listeleme işlemleri yapılabilir. Gelelim TXT dosyaların içeriğinin RichTextBox ta gösterilmesine.

Öncelikle yeni bir prosedür ekliyoruz:

Visual Basic Code
Sub DosyaIceriginiOku(ByVal dosyaAdresi As String)


       Try
           Using sr As New StreamReader(dosyaAdresi, System.Text.Encoding.Default)
               Dim dosyaIcerigi As String
               dosyaIcerigi = sr.ReadToEnd()
               RichTextBox1.Text = dosyaIcerigi
           End Using
       Catch e As Exception
           MsgBox("Dosya içeriği okunamadı :" & vbCrLf & vbCrLf & e.Message)
       End Try

   End Sub


Bu prosedür öncekinden farklı olarak bir parametre alacak. Bu parametreye içeriğini görüntülemek istediğimiz TXT dosyasının adresini göndereceğiz. Ona sonra geliriz şimdi prosedürü incelemeye devam edelim.

Try-Catch kaçınılmaz olarak kullanılmalıdır yoksa programda kırılmaya sebebiyet verecek hatalar alabilirsiniz.

StreamReader da ikinci parametre olarak System.Text.Encoding.Default kullanmazsanız dosya içeriğini gösterirken Türkçe karakterler yerine garip karakterler çıkacaktır.

Gelelim bu prosedüre gönderilecek dosya adresini nasıl alacağımıza. Listview'in özelliklerinden FullRowSelect özelliğini True yapıyoruz. Listview üzerinde tıklama işleminde eğer tıklanılan satırın Index değeri değişirse tıklanan satırdaki klasör ve şarkı isimlerini kullarak Txt dosyası adresini prosedüre parametre olarak gönderiyoruz:

Visual Basic Code
Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged

        DosyaIceriginiOku(Application.StartupPath & "\REPERTUARX\" & ListView1.Items(ListView1.FocusedItem.Index).SubItems(0).Text & "\" & ListView1.Items(ListView1.FocusedItem.Index).SubItems(1).Text)
   End Sub


[Resim: do.php?img=4869]

AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
...........
#5
(21/05/2015 10:08)alpeki99 Adlı Kullanıcıdan Alıntı: StreamReader da ikinci parametre olarak System.Text.Encoding.Default kullanmazsanız dosya içeriğini gösterirken Türkçe karakterler yerine garip karakterler çıkacaktır.
Öncelikle çok teşekkürler, emeğinize sağlık. Konu benim açımdan çözüme kavuşmuştur.

System.Text.Encoding.Default

ile

Encoding.GetEncoding("windows-1254")

arasında bir fark varmı ?

drummers, 11-05-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#6
Benim yazdığımda işletim sisteminin kodlaması hangisi ise -bende Türkçe Win yüklü- onun karakter kodlaması alınır. Mesela İngilizce veya Almanca olsaydı Türkçe karakterler yine sorunlu görünürdü.

Sizin yazdığınızda TXT dosyalarının kodlamasını 1254 yani ANSI olarak kabul eder ona göre gösterim yapar ancak UTF-8 ile kodlanmış bir dosya olsaydı bu defa ne sizin kod ne benimki işe yarardı.

Hangisini kullanırsanız kullanın esas olan TXT dosyanın hangi karakter seti ile kaydedildiğidir. Mesela sizin TXT dosyalarını ANSI olarak kodlanmış. Biz bu şekilde kullandık ancak farklı kodlamalar UTF-8 vs. söz konusu olduğunda dosya kodlamasını tespit edip çeviri işlemi yapmak lazım.

Kısacası farklı kodlama yapıları sözkonusu olmayacak ise her ikiside kullanılabilir.

AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
...........

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da