• 0

مشكلة Index was out of range؟

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

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

أحاول عمل هذا من خلال 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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 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();

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

جزاكم الله خيرا. فعلا هى لغه c# .

شكرا على الرد فعلا استفدت منه . فلكم جزيل الشكر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن