_
2007'den beri29 bin mesaj
Cevaplar
_
2007'den beri29 bin mesaj
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 ?
N
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...
_
2007'den beri29 bin mesaj
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?
N
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.
_
2007'den beri29 bin mesaj
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
N
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/hbzag5Visual 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.
_
2007'den beri29 bin mesaj
Teşekkür ederim bakacağım sorum olursa yine yazarım :)
_
2007'den beri29 bin mesaj
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.
N
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/319401Soruları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.
_
2007'den beri29 bin mesaj
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.
N
Resmi gösterirken ki kullandığın kodları da ekleyebilir misin?
_
2007'den beri29 bin mesaj
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 :)
N
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.
_
2007'den beri29 bin mesaj
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 :)
_
2007'den beri29 bin mesaj
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.
N
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.
_
2007'den beri29 bin mesaj
Çözüldü teşekkürler :)
Daha da dokunmayayım ben buna :D
N
Dokun dokun :) Boza boza öğrenebilirsin çoğu şeyi :D
_
2007'den beri29 bin mesaj
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.
N
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
_
2007'den beri29 bin mesaj
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.