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

مشكلة Index was out of range؟

mohammed hassan el taifa

السؤال

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...