İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. SDN Programlama Kafe
SDN Programlama Kafe

MessengerCache den smiley,avatar yürüten program.

__kadıköyRAP__01.06.201021 cevap3.628 görüntüleme
Cevaplar
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#2
Merhaba arkadaşlar,
filelistbox un aldığı öğeleri ada göre değilde değiştirme tarihine göre alması için bi yol var mı, kendi yaptığım algoritmayla program yavaşladı biraz, tek bir kodla yapılabiliyor mu ?
2008'den beri6.607 mesaj
#3
Malesef FileListBox komponentinin böyle bir özelliği yok. DirectoryInfo ve FileInfo sınıflarını kullanarak kendi algoritmanı yapabilirsin.

Ama tavsiyem ListView kullanman yönünde. Kullanıcı bu şekilde nasıl kullanmak istediğini kendi belirler. İster ada göre ister tarihe göre...
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#4
Listview hiç kullanmadım, biraz araştırayım teşekkürler :)

---------- saat 16:06 eklendi ---------- önceki mesaj saat 15:28 eklenmişti ----------

Necati kardeşim, listview in kullanımı da sanırım stringlerden oluşuyor, direk olarak bir dosya ekleyip tarihe göre sıralama yapabilirim sanmıştım, yine ayrıca bi algoritma mı yazmam gerekiyor?
2008'den beri6.607 mesaj
#5
ListView kullanırken FileInfo sınıfını kullanarak doldurman gerekir. Yani FileInfo sınıfında özellikleri olan Name, FullName, LastWriteTime, LastAccessTime, CreationTime gibi özelliklerini ListView 'de göstereceksin. Kullanıcı hangi alana göre sıralama yapmak istiyorsa kolon adına tıkladığı zaman kendisi otomatik sıralama yapıyor.

Yani sıralama yapmak için senin algoritma oluşturmana gerek yok.
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#6
Tamam onları kullanmam gerekiyor ama listview içine string kabul ediyor..
Uğraşayım ben biraz daha.

---------- saat 17:37 eklendi ---------- önceki mesaj saat 16:43 eklenmişti ----------

Hocam ben bunun içinden çıkamadım malesef :)

listView1.Items.Add("Dosya adı").SubItems.AddRange("Dosya tarihi");

olarak ekliyorum her dosyayı ama tarihe göre nasıl sıralayacak ki? Eklediğimiz şeyleri de zaten mecbur stringe çevirip ekliyoruz.

şuna bir bak istersen hocam filelistbox a dosyaları alıp oradan listview e atıyorum
http://www.4shared.com/file/vLOiUtp3/WindowsApplication1.html
2008'den beri6.607 mesaj
#7
Kusura bakma ben DataGridView gibi ListView'de de otomatik sıralama özelliği var sanıyordum. Ayrı bir sınıf ile kullanmak icab ediyormuş.

Burdan indirebilirsin: http://ul.to/hbzag5

Visual Studio 2010 projesi şeklinde. Eğer vs2010 yüklü değilse boş bir windows form projesi oluştur ve Form1.cs ve ListViewColumnSorter.cs dosyalarını ekle.
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#8
Teşekkür ederim bakacağım sorum olursa yine yazarım :)
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#9
ListViewColumnSorter.cs çok şükela bi şeymiş sen mi yazdın hazırmıydı hocam :) bir de e.Column ve lvwColumnSorter.SortColumn nedir bunları kısaca söyleyebilir misin? Programın geri kalanını anladım zaten gerisinde bişey kalmıyor :) ListViewColumnSorter.cs'ye girmedim bile o daha karışık.
2008'den beri6.607 mesaj
#10
Yok ben yazmadım :) Daha önceden de dediğim gibi ben ListView 'de varsayılan olarak sıralama özelliği var sanıyordum. Olmadığını görünce kısa bir araştırma yaptım.

Yararlandığım kaynak: http://support.microsoft.com/kb/319401

Sorularına gelince. e.Column tıklanan kolonun indexini verir. ListViewColumnSorter.SortColumn ile sıralama yapılacak kolon indexi belirtilir veya en son hangi kolon sıralanmış öğrenilebilir.
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#11
Tamam teşekkürler :) şimdi de şöyle bi sorum var, bir de resim silme butonu ekledim şu şekilde

pictureBox1.Image = null; // resim kullanılmasın ki silinebilsin diye null yapıyorum
silinecek = listView1.SelectedItems[0].Text;
listView1.SelectedItems[0].Selected = false; // yine kullanılmasın diye listview1 de hiç birşey seçtirmiyorum
try
{
        File.Delete(MessengerCache + silinecek);
}
catch(Exception ex)
{
        MessageBox.Show(ex.Message);
}


Dosya kullanılıyor hatası veriyor.
2008'den beri6.607 mesaj
#12
Resmi gösterirken ki kullandığın kodları da ekleyebilir misin?
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#13
Tabi :)

if (listView1.SelectedItems.Count != 0)
            {
                pictureBox1.Image = Image.FromFile(MessengerCache + listView1.SelectedItems[0].Text);
                if (pictureBox1.Image.Size.Width > pictureBox1.Size.Width || pictureBox1.Image.Size.Height > pictureBox1.Size.Height)
                    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                else
                    pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
            }


Hocam ben sana en iyisi tüm projeyi de atayım :)
2008'den beri6.607 mesaj
#14
pictureBox1.Image=null; yerine pictureBox1.Image.Dispose(); yapmalısın. Ayrıca listView1.SelectedItems[0].Selected = false; satırını da sil. Hem gerek yok hem de hata verdiyor.
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#15
Teşekkür ederim dediğini yaptım, ama bazen siliyor bazen tekrar sıralarken hata veriyor, onunla uğraşmaya çalışıyorum şimdi, beceremezsem yine burdayım :)
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#16
Kardeş kusura bakma sürekli her hatada burdayım gibi gözüküyor ama aslında öyle değil kendim az önce bi kaç sorunla karşılaştım uğraştım çözdüm ama şu anki çok saçma nedenini hiçbirşekilde anlayamadığım bir hata.

Programı açıyorum, bi resim seçip sil diyorum siliyor, buraya kadar normal ama eğer bir resmi bi kere gösterdiğimde silmezsem başka bi resim seçip tekrar eski resime döndüğümde onu silemiyorum kullanılıyor diyor.
Yani şöyleki programı açtım resim1 e baktım sonra resim2 yi seçip ona baktım, sonra dedim resim1 i sileyim geri döndüm resim1 i seçtim sil dediğimde silemezsin kullanılıyor diyor olay bu.

Gerçekten hiçbir fikir yürütemeyecek durumdayım şu an.
2008'den beri6.607 mesaj
#17
Her resim değiştirmede dispose metodu çağrılmadığı için garbage collector temizleyene kadar hafızada kalıyor sanırım. Bu yüzden garbage collectorü resim değiştirmeden önce çağırmakla iş çözülür. Yani:
if (pictureBox1.Image != null)
                    pictureBox1.Image.Dispose();


satırlarını
pictureBox1.Image = Image.FromFile(MessengerCache + listView1.SelectedItems[0].Text);


satırından önce eklemen gerekir. Bu şekilde çözülmesi gerekir.
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#18
Çözüldü teşekkürler :)
Daha da dokunmayayım ben buna :D
2008'den beri6.607 mesaj
#19
Dokun dokun :) Boza boza öğrenebilirsin çoğu şeyi :D
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#20
Aslında aklımda başka şeyler var, mesela avatarlar, smileyler ve diğerleri diye listeletebilmek için bi combobox koymak. Avatarın çözümü basit 96x96 oluyorlar zaten, smileyler sanırım hep gif oluyor bunun için de gif olup olmadığını anlamak için dosya headerlarına bakmam lazım işte orada kayış kopuyor zaten. Dikkat edersen kaydederken hiç ayırmıyorum hepsini ne var ne yok .gif diye kaydediyorum :D Ama aralarında png jpg olanlar var işte ayıramadım.
2008'den beri6.607 mesaj
#21
Evet farkettim gif olarak kaydediyor hepsini. Ama herşey yavaş yavaş. Sadece sabır gerekiyor işte :)

Bir de bir program bittiği zaman verdiği haz inanılmaz :D
__kadıköyRAP__ Konuyu açan
2007'den beri29 bin mesaj
#22
Evet çok şükela birşey :D

Şimdi de dedim ki bi resim silinince gözükmeye devam etmesin picturebox1.visible=false olsun yeni bi resim seçilince de true olsun. Hata verdi dedim sabır başka bi yol deniyim, bu sefer genişlik yükseklik 0,0 olsun dedim, resim seçince yine eski halini alsın, yine hata verdi. Çıldırcam :lol:

Neyse onu da hallettik :)

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.