PDA

View Full Version : سوال: کنترل آیتمهای listbox و ذخیره ی آن در فایل تکست



voice.of.silence
یک شنبه 19 شهریور 1391, 10:55 صبح
سلام دوستان:
من می خوام آیتمهای لیستباکس را از لحاظ این که آیتمی تکراری نباشد کنترل کنم و در صورد تکراری بودن با یک Messagebox به کاربر هشدار دهد.
زیرا این لیستباکس در زمان Run Time پر می شود.

هم چنین می خواهم که کار بر بتواند لیستباکس مربوطه را در پایان کارش به صورت یک فایل تکست ذخیره کند. (من در این برنامه از پایگاه داده استفاده نمی کنم. ). من از کد زیر استفاده کردم اما جواب دلخواه را دریافت نکردم.
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "Save Logs";
sfd.Filter = "Text Document|*.txt";

if (sfd.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(sfd.FileName);
sw.WriteLine(lstlog.Items.ToString());
sw.Close();
}

با سپاس.
Voice of Silence

harani
یک شنبه 19 شهریور 1391, 11:20 صبح
سوال دومی کافی یه حلقه بذاری :


SaveFileDialog sfd = new SaveFileDialog();//l
sfd.Title = "Save Logs";//h
sfd.Filter = "Text Document|*.txt";//s

if (sfd.ShowDialog() == DialogResult.OK)//d
{
StreamWriter sw = new StreamWriter(sfd.FileName);//d
foreach (String str in lstlog.Items)//c
sw.WriteLine(str);//b
sw.Close();//a
}

voice.of.silence
یک شنبه 19 شهریور 1391, 22:48 عصر
سلام دوست عزیز: پاسخ شما بسیار کارگشا بود و مرا در حل مسئله بسیار کمک کرد.
اما در اینجا می خوام بگم که باید sw.close(); را خارج از حلقه ی foreach نوشت زیرا اگر درون آن باشد برنامه در حال Run Time دچار خطا میشه .

Mahmoud.Afrad
یک شنبه 19 شهریور 1391, 23:45 عصر
برای دادن پیغام در صورت تکراری بودن
if (!listBox1.Items.Contains("your item"))
listBox1.Items.Add("your item");
else
//show messagebox
برای نوشتن در فایل
using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.Filter = "Text Document|*.txt";//s

if (sfd.ShowDialog() == DialogResult.OK)//d
{
File.WriteAllLines(sfd.FileName, listBox1.Items.Cast<string>().ToArray(), Encoding.UTF8);
}
}