PDA

View Full Version : سوال: مشکل کد زیر چیست؟چرا فایل های داخل پوشه انتخاب شده داخل لیست باکس قرار نمیگیرند؟



ariya_omidi
چهارشنبه 04 دی 1392, 11:55 صبح
privatevoid btn_selectfolder_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = newFolderBrowserDialog();


fbd.ShowNewFolderButton = false;


if (fbd.ShowDialog() == DialogResult.OK)
{


string path= fbd.SelectedPath;


string Pattern = "*.jpg;*.gif;*.bmp";


string[] filePaths = Directory.GetFiles(path, Pattern ,SearchOption.AllDirectories);


foreach(string s in filePaths)


listBox2.Items.Add(s.ToString());


}


}



میخوام تو این کد تمام فایل هایی که پسوندشون نیز مسخص شده را داخل لیست باکسم درج کنم اما نمیشه
راستی اینم بگم که اصلا خطای گرامری نداره
ممنون از دوست های خوبم بابت راهنمایی هاتون!!!!

fmehrvarzi
چهارشنبه 04 دی 1392, 16:38 عصر
از این استفاده کن برا من کار کرد!
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowNewFolderButton = false;
if (fbd.ShowDialog() == DialogResult.OK)
{
string path = fbd.SelectedPath;
// string Pattern = "*.jpg||*.gif|*.bmp";
var filePaths = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".gif") || s.EndsWith(".jpg") || s.EndsWith(".bmp"));
foreach (var s in filePaths)
listBox2.Items.Add(s.ToString());
}

ariya_omidi
چهارشنبه 04 دی 1392, 18:03 عصر
ممنون دوست عزیز
فقط یه مشکل داشت، اونم اینکه اگه درایو را انتخاب کنیم خطا میده که اونم با یه دستور
trycatchحلشد


try
{
var filePaths = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".gif") || s.EndsWith(".jpg") || s.EndsWith(".bmp"));
listBox2.Items.Clear();
foreach (var s in filePaths)
listBox2.Items.Add(s.ToString());
}
catch
{
MessageBox.Show("فقط پوشه انتخاب کنید، نمیتوان کل درایو را انتخاب کرد");


}

fmehrvarzi
چهارشنبه 04 دی 1392, 19:37 عصر
try catch مشکلت رو حل کرد!!!!
یا اون کدها رو که
.Where(s => s.EndsWith(".gif") || s.EndsWith(".jpg") || s.EndsWith(".bmp"));
از بالا کپ زدی تشکر هم که یادت رفت!
چقدر بی ملاحظه اند بعضیها

ariya_omidi
چهارشنبه 04 دی 1392, 21:19 عصر
try catch مشکلت رو حل کرد!!!!
یا اون کدها رو که
.Where(s => s.EndsWith(".gif") || s.EndsWith(".jpg") || s.EndsWith(".bmp"));
از بالا کپ زدی تشکر هم که یادت رفت!
چقدر بی ملاحظه اند بعضیها
دوست عزیز اگه دقت کنی که در قسمت دوم همه کدها همون کد های شما ...(این یعنی اینکه شما مشکل کد پست اولو حل کردید) فقط منم یه try catch بهش اضافه کردم در واقع منم در ادامه کد های شما این حرف گفتم
راستی به نحوی منم تشکر کردم (ممنون دوست عزیز)

اما در کل ممنونم بخاطر لطفی که دارید
ما که مبتدی هستیم و به کمک دوستان با ارزشمنی مثل جنابعالی نیاز داریم اگه هم یه جایی بی ادبی شده شما ببخشید

matin.soft
چهارشنبه 04 دی 1392, 22:53 عصر
try catch مشکلت رو حل کرد!!!!
یا اون کدها رو که
.Where(s => s.EndsWith(".gif") || s.EndsWith(".jpg") || s.EndsWith(".bmp"));
از بالا کپ زدی تشکر هم که یادت رفت!
چقدر بی ملاحظه اند بعضیها
از هر کاری که برای دیگران انجام می دهید انتظار تشکر و سپاسگذاری نداشته باشید چون دراینصورت ارزش کاری که انجام داده اید را از بین می برید.هر کاری را برای رضای خدا انجام دهید.
موفق باشید

Mousavmousab
چهارشنبه 04 دی 1392, 23:29 عصر
سلام

برای اینکه کار شما دوستان را شاید کمی تمیل تر کنم ، پیشنهاد می کنم به جای اینکه از حلقه Foreach استفاده کنند می توانند از متد AddRange از ListBox به جای متد Add استفاده کنید تا کد شما باز هم ساده تر شود.
موفق باشید.
من فکر می کنم اگر از چیز های آماده خود VS استفاده کنیم. بهتر است. آماده ای که بازده ی خوبی داشته باشد نه هر آماده ای.
هدف سرعت بود.

دست دوستان درد نکنه
موفق باشید
---------------------------
آموزش برنامه نویسی ویژوال بیسیک
www.homecode.blogfa.com

ariya_omidi
پنج شنبه 05 دی 1392, 09:06 صبح
سلام

برای اینکه کار شما دوستان را شاید کمی تمیل تر کنم ، پیشنهاد می کنم به جای اینکه از حلقه Foreach استفاده کنند می توانند از متد AddRange از ListBox به جای متد Add استفاده کنید تا کد شما باز هم ساده تر شود.
موفق باشید.
من فکر می کنم اگر از چیز های آماده خود VS استفاده کنیم. بهتر است. آماده ای که بازده ی خوبی داشته باشد نه هر آماده ای.
هدف سرعت بود.

دست دوستان درد نکنه
موفق باشید
---------------------------
آموزش برنامه نویسی ویژوال بیسیک
www.homecode.blogfa.com

سلام دوست عزیز

ممنون از راهنمایی تون اگه امکانش هست همین کد را با متد AddRange بنویسید نتونستم بنویسمش .

بازم ممنون از راهنمایی هاتون

موفق باشی

khokhan
پنج شنبه 05 دی 1392, 11:05 صبح
اگه امکانش هست همین کد را با متد AddRange بنویسید نتونستم بنویسمش

List<string> lstFiles = new List<string>();
private void button1_Click(object sender, EventArgs e)
{
string[] arrFiles = null;
FolderBrowserDialog fbd = new FolderBrowserDialog();
DialogResult result = fbd.ShowDialog();
if (result == DialogResult.OK)
{
arrFiles = Directory.GetFiles(fbd.SelectedPath, "*.txt", System.IO.SearchOption.TopDirectoryOnly);

}

foreach (string s in arrFiles)
{
lstFiles.Add(Path.GetFileName(s));
}
listBox1.Items.AddRange(lstFiles.ToArray());
}

fmehrvarzi
جمعه 06 دی 1392, 06:23 صبح
از هر کاری که برای دیگران انجام می دهید انتظار تشکر و سپاسگذاری نداشته باشید چون دراینصورت ارزش کاری که انجام داده اید را از بین می برید.هر کاری را برای رضای خدا انجام دهید.
موفق باشید
تشکر کردن تو این سایت (که توصیه میشه) کمک میکنه من ِ نوعی ، که کد نوشتم متوجه بشم کدی که نوشتم کارشون را راه انداخته و یا مشکلشون را حل کرده
اگر تشکری نباشه! ملت همه میان مسئله ای که حل شده را ممکنه دوباره حل کنند. (دوباره کاری زیاد میشه!)
و یا ممکنه به من بگه : کدهات ممکنه کارشونو راه ننداخته باشه.
ایشان هم منظوری نداشتن مشکل با اون کدهای بالا حل شد.
اما چون گفته بودن try catch مشکلشون را حل کرده ! و از همون کدهای بالا استفاده کرده بودن! گفتم که توصیه ای کرده باشم!
در ضمن این مسئله به رضای خدا ربطی نداره!
با تشکر