اذهب إلى المحتوى

السؤال

نشر

أريد المساعدة في هذا الكود

الفكرة هي الحصول  على جميع أسماء الملفات الموجودة في فولدر معين بالإضافة إلى جميع الفولدرات الداخلية و ارسالها الى ملف اكسل

أحاول عمل هذا من خلال datagridview  لكن عند تشغيل البرنامج يعطى الرسالة الآتية:

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

و هذا هو الكود المستخدم

private void button1_Click(object sender, EventArgs e)

{

/* get all files name without path*/

string path;

if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)

{

path = folderBrowserDialog1.SelectedPath;

string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);

int i = 0;

foreach (string file in files)

{

//listBox1.Items.Add(Path.GetFileName(file));

dataGridView1.Rows[0].Cells[i].Value = file;

i++;

}

}

}

test.rar

Recommended Posts

  • 0
نشر

لم تذكر لغة البرمجة التي تستخدمها. ولكن يبدو أنّها سي شارب C#.

 

أتصور أنّ مشكلتك في هذا السطر:

dataGridView1.Rows[0].Cells[i].Value = file;

الأداة datagridview التي تستخدمها لا تمتلك أيّ سطر بعد. علمًا أنّك تحاول إضافة الملفات إلى العمدة وليس إلى الأسطر. أتصوّر أنّ الكود التالي سيفي بالغرض:

        private void button1_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                string path = folderBrowserDialog1.SelectedPath;

                string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);

                //reset all columns.
                dataGridView1.Columns.Clear();

                //create a column first.
                dataGridView1.Columns.Add("colFile", "الملف");

                foreach (string file in files)
                {
                    dataGridView1.Rows.Add(file);
                }
            }
        }

ينشئ الكود السابق عمودًا ضمن dataGridView1 ثمّ يعمل على إضافة الملفات التي حصل عليها على شكل أسطر ضمن هذا العمود. لاحظ أنّني قد حذفت جميع الأعمدة التي قد تكون قد أنشأتها من قبل باستخدام العبارة:

dataGridView1.Columns.Clear();

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...